一文说透传统数据库 VS 数据仓库
今天有同学问我:“学长,传统数据库和数据仓库的区别是什么?”
同学这么一问,还真有点儿把我给问住了。
虽然我也经常跟别人讲什么是实时数仓,什么是离线数仓,它们的分层架构和技术选型应该如何做,但确实被这个问题给灯下黑了,似乎很难一下子清晰准确地给出两者的具体区别。
随后,经过一通网上查资料学习,我算是把这个问题整理清楚了,也输出这篇文章跟大家分享下,先来看看两者的定义。
传统数据库,也就是我们常说的,以 Oracle 和 MySQL 为代表的关系型数据库,用于存储和管理结构化的数据,以快速响应用户操作为主,具备ACID(原子性、一致性、隔离性、持久性)的事务特性。
数据仓库,是一种面向商业智能活动(数据挖掘、数据分析、数据报表)的数据管理系统,通常涉及大量的历史数据,用于企业的分析性报告和决策⽀持,以星型模型和雪花模型为主。
两者的主要区别,包括如下几个方面:
设计思路
众所周知,传统数据库是以应用或服务为粒度来进行设计的,如:商品服务、订单服务、用户服务、促销服务等。
而数据仓库则是面向主题进行设计的,我们可以将主题理解为一个宏观的分析领域, 是在较高层次上将业务系统中某一分析对象的数据进行整合、归类并分析的一种范围。如:销售主题、客户主题、供应商主题等。
面向主题设计的优势在于,用户能够更简单直接地利用数据进行多维复杂分析,而不需要从各个不同的业务系统中寻找并串联数据,可大幅提升工作效率和实现更深入的业务洞察。
以保险行业为例,对应的数仓十大主题如下:
核心用途
传统数据库的核心用途,是用来管理业务系统所产生的业务数据,如:电商交易、银行转账、客户关系管理等。
而数据仓库则用于构建面向分析的集成化数据环境,通过报表分析和数据洞察的方式,为企业的战略决策提供数据依据。
数据仓库不生产任何数据,其数据来源于各个业务系统的数据库,数据仓库也不会对数据进行消费,只是将数据分析后的结果开放给各个外部系统使用。
我们以常见的电商场景为例:
构成部分
传统数据库的构成部分比较简单,是由数据库本身和数据库管理系统(DBMS)组成。
而数据仓库则要复杂很多,由数据源、ETL 工具、数据存储、元数据管理和数据访问分析工具共同构成。
其中,ETL 工具负责从数据源抽取数据,并经过清洗转换之后加载到数据仓库中,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。
数据存储是数据仓库中最为的核心部分,通常采用多维数据模型(星型模型、雪花模型)来组织数据,并通过列式存储的方式来减少数据读取范围和提升数据压缩比,以达到提升查询性能的目的。
数据稳定性
在传统数据库中,为了满足于用户对业务系统的日常操作,对数据进行更新比较高频,且需要实时生效。
而数据仓库中的数据主要提供企业决策分析之用,反映的是一段相当长的时间内历史数据的内容,是不同时点的数据库快照的集合, 以及基于这些快照进行统计、综合和重组的导出数据,而不是联机处理的数据。
因此,其所涉及的数据操作基本上是数据查询分析,数据需要保持在稳定态,原则上并不提倡进行更新操作。
那问题来了,如果出于业务需要,必须进行更新操作的话怎么办?
对于数据仓库来说,正确的技术方案是通过时间戳或版本号进行标记,并以插入新数据和定期删除老数据的方式进行替代。
如下图所示,有些像 MySQL InnoDB 中实现了 MVCC(多版本并发控制) 机制的 Undo Log:
性能指标
传统数据库专注于实时处理和管理大量事务数据,通常是为支持高并发的日常事务处理而设计的。因此衡量其性能最重要的指标,为其所能承载的峰值 TPS(每秒事务数)和对应的 QPS(每秒查询率)。
而数据仓库的主要操作为查询大量数据进行汇总分析,因此在海量数据下查询的RT(响应时间)为衡量其性能的最重要指标。
被用作一站式实时数据仓库的 ClickHouse,它的官网上公布的测试数据也是这样体现的。
内容如下:
所有用于对比的数据库都使用了相同配置的服务器,在单个节点的情况下,对一张拥有133个字段的数据表分别在1000万、1亿和10亿三种数据体量下执行基准测试,基准测试的范围涵盖43项 SQL 查询。
在1亿数据集体量的情况下,ClickHouse 的平均响应速度是 Vertica 的2.63倍、InfiniDB 的17倍、MonetDB 的27倍、Hive 的126倍、MySQL 的429倍以及Greenplum 的10倍。
用户群体
传统数据库是服务于终端用户的,既有企业级的 ERP 系统、OA 系统、CRM 系统用户,也有淘宝电商、拼多多电商、美团外卖、滴滴打车、抖音短视频等数亿规模的 APP 用户。
而数据仓库的用户群体,则为企业内部的数据分析师和管理决策者,其规模最多也不会超过数百人。
结语
当然,对于传统数据库和数据仓库的区别,每个工程师对此都会有自己的解读,属于典型的仁者见仁智者见智的问题,并没有标准的答案。
网上还有一种比较好玩儿的观点认为,传统数据库是必不可少的雪中送炭,而数据仓库只是恰如其分的锦上添花,我觉得这种观点也对吧。
毕竟“大数据研发工程师”这个岗位,只要脱离了北上广深四个一线城市,其实在二三线城市的岗位很少,甚至可以用屈指可数来形容了。
- 点赞
- 收藏
- 关注作者
评论(0)