数据仓库是一种结构体系,而数据库是一种具体技术。数据仓库是伴随着信息与决策支持系统的发展过程产生的。
数据库 Database (Oracle, Mysql, PostgreSQL)主要用于事务处理,
数据仓库 Datawarehouse (Amazon Redshift, Hive)主要用于数据分析。
用途上的不同决定了这两种架构的特点不同。
数据库(Database)的特点是:
- 相对复杂的表格结构,存储结构相对紧致,少冗余数据。
- 读和写都有优化。
- 相对简单的read/write query,单次作用于相对的少量数据。
数据仓库(Datawarehouse)的特点是:
- 相对简单的(Denormalized)表格结构,存储结构相对松散,多冗余数据。
- 一般只是读优化。
- 相对复杂的read query,单次作用于相对大量的数据(历史数据)。
数据仓库的所有的特性(独立不影响业务,表结构简单,读数据速度快,相对安全)
两者的对比
1、存储空间对比
从存储空间角度讲,相比于数据库紧密的存储结构,数据仓库则存在大量冗余重复的数据。
2、读写优化对比
由于数据库需要利用表之间的关联才能找到所有需要的数据,在效率上会相对低下。相比之下数据仓库把这些关联关系转化成重复数据记录到同一张表上了,查询效率相对就会较高。数据仓库相当于牺牲了空间换取了查询效率。
3、大数据读(Read)操作对比
数据仓库在查询的时候,不仅根据查询键的值来搜索对应节点位置,同时进行大量的并行查询。这使得在对大数据进行查询的时候有极大的优势。
但是,并不是所有的读操作,数据仓库一直都有优势。比如在如下两种情况时,数据仓库的读表现并不如数据库:
- 在对小量数据进行读取操作的时候,由于数据仓库要进行找Node的location之类的预运算,整体效率上反倒不如数据库。
- 如果读取操作的目标不是主键(PrimaryKey)或者分配键(PartitionKey),那么数据仓库的查询也需要进行全局扫描,效率上就不好说是否胜过数据库了。
常见的架构
参考资料:
链接:https://www.zhihu.com/question/20623931/answer/750367153