对于数据库的概念,大家可能都比较熟悉,但是对于数据仓库,可能理解相对模糊,两个概念很容易搞混。事实上,数据库与数据仓库差异很大,下面为大家介绍一下数据库和数据仓库的相关知识。
一、数据管理发展历程
要清楚数据库与数据仓库,首先我们需要了解数据管理的发展历程。
随着计算机技术的不断更新和迭代,数据管理经历了人工管理、文件系统、数据库系统三个发展阶段。在数据库系统管理阶段的早期,人们对数据的操作主要集中于增删改查等操作。数据库(Database,简称DB)是一种逻辑概念,用来存放数据的仓库,通过数据库软件来实现。
但随着计算机的应用领域不断扩大,新领域的诞生对数据库技术提出了更高要求。面对海量的数据,人们希望能够高效利用其价值,从而给企业带来收益。这时候,传统的操作型数据库就无法满足这一需求,因此便产生了数据仓库。数据仓库(Data Warehouse,简称DW/DWH)是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策和信息的全局共享。
数据库与数据仓库都是用来存放结构化数据的地方,二者从逻辑上来看并无二异,但二者在技术、应用等层面均有较大差异,数据仓库在概念上是数据库的一个升级,通常为大数据量读取,用于辅助企业进行决策。
数据库与数据仓库的区别
1)两种数据处理模式,OLTP 与 OLAP
由于对存放数据的数据特征、性能要求、应用范围等因素的不同,当今的计算机系统中存在着两种不同的数据处理模式:操作型数据处理和分析型数据处理,又称:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。我们讲数据库与数据仓库的区别,实际就是讲OLTP 与 OLAP 的区别。
OLTP是传统的关系型数据库的主要应用,主要面向一般工作人员和基层管理人员,实现基本的、日常的事务处理,可进行数据库记录的增删改查。OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作。
OLAP是数据仓库系统的主要应用,主要面向分析人员和中高级管理人员,可进行复杂的分析操作,侧重决策支持,多应用于复杂的动态报表系统,提供直观易懂的查询结果。OLAP 系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。
存储与应用
从数据存储的类型上来看,数据库一般存储的是在线交易数据,而数据仓库存储的一般是历史数据。
在设计上,数据库是为捕获数据而设计的,其范式设计会尽量避免冗余,存储结构相对紧凑。
而数据仓库是为分析数据设计的,表的结构会按照分析需求、分析维度、分析指标等进行设计,因此会有意引入冗余,存储结构相对松散。当企业想要进行数据分析时,例如电商想要知道某一特定消费人群的消费偏好,就需要提取用户喜好相关的数据标签,如消费时间、支付方式、消费品类等,这些都需要通过形成数据报表来进行分析,从而辅助决策。
在读写优化方面,数据库由于少冗余,存储结构紧凑,在读写上会有优化,对于单个数据项的增删改查操作效率较高。
当然数据库效率较高的优势主要是在处理小数据量的情况下,当面对海量数据时,数据库在读取数据时需要先进行表之间的关联整合才能获取所需数据,而数据仓库由于不需要建立表之间的关联关系,在查询时效率就会较高,数据仓库相当于是牺牲空间换时间。
所以面对大数据量时,数据仓库为了优化读操作,报表中会存在大量的冗余,大多数情况下不会进行写操作。因为冗余和重复的行数太多,如果想要在报表中修改一个小的字段,可能会涉及到表中大量的行数据,在效率和精确度上都难优化。
总结
数据库主要面向业务,用于事务处理,比较流行的有:MySQL, Oracle, SqlServer等;数据仓库,主要面向决策,用于数据分析,比较流行的有:AWS Redshift, Greenplum, Hive等。两者没有孰优孰劣的分别,针对不同的应用场景,均有其优势。
数据库和数据仓库分工不同,数据库存放操作型数据,用于操作型数据处理,关注的事务处理的效率;数据仓库存放分析型数据,用于分析型数据处理,关注的是分析和查询的效率;两者功能不同、用途不同,因此结构也会不同。