闲聊数据库和数据仓库的区别
Posted 木东居士
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闲聊数据库和数据仓库的区别相关的知识,希望对你有一定的参考价值。
0x00 前言
最近群里童鞋们在数据库和数据仓库的区别,因此简单做一些整理。
0x01 概念上的区别
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。 ————百度百科
数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。 ————百度百科
直观上理解:相同点是两者都是存储数据。不同点是数据库主要是基本的、日常的事务处理,例如银行交易;数据仓库,支持复杂的分析操作,侧重决策支持。
0x02 举个例子
举个最常见的例子,以我们常举例的电商来讲,我们侧重于从没有数据仓库到有数据仓库的演变阶段:
第一阶段:无分析需求阶段
电商早期,基本不需要太多数据分析,先跑起来系统就行,这时候买一套电商系统,搞点服务器,加一两个研发就能跑起来了。这时候对数据的需求就是只需要有个数据库就行。最多就是看看营业额就够,不需要数据仓库。
第二阶段:简单统计需求阶段
网站做大后流量来了,客户和订单都多起来了,普通查询已经有压力了,这个时候就需要升级架构变成多台服务器和多个业务数据库(量大+分库分表),这个阶段的业务数字和指标还可以勉强从业务数据库里查询。
此时仍不太需数据仓库,数据库勉强够用,定时从从库里面统计数据就可以。
第三阶段:复杂统计需求阶段
随着业务指数级的增长,数据量的会陡增,数据来源也越来越多样,这时已经不单单是交易类数据了,用户点击、和图片等数据都多了起来。
同时公司角色也开始多了起来,开始有了 各种老板,各种运营、市场、产品的同学,大家需要面临的问题越来越复杂,越来越深入,对数据的需求也越来越复杂。而复杂的分析类计算势必会对线上的数据库造成影响。
因为,业务数据库中的数据结构主要是为了完成交易而设计的,不是为了而查询和分析的便利设计的。业务数据库大多是读写优化的,即又要读,也要写。因此对于大量数据的读操作和复杂计算是支持不足。
而怎么解决这个问题,此时我们就需要建立一个数据仓库了。
0x03 技术上的区别
有了上面的分析,大家可能感觉还是比较虚,那我们举一些现实工作中遇到的技术,来看一下数据库和数据仓库的区别:
- 流行的数据库:mysql、Oracle、SqlServer等
- 流行的数据仓库:Hive、Impala、Greenplum等
划分并不绝对,比如很多公司也会用Oracle来做数据仓库,但是基本没有公司用Hive来当作业务库来使用。
0x04 模型上的区别
关于模型的区别,我写过一篇文章专门分析数据仓库和数据库建模的区别,可以参考 。
0xFF 总结
总结一下:
- 数据库是面向事务的设计,数据仓库是面向主题设计的。
- 数据库一般服务于业务系统的,数据仓库一般是服务于分析系统的。
- 数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。
- 数据库设计是尽量避免冗余,数据仓库在设计是有意引入冗余。
数据库是为捕获数据而设计,数据仓库是为分析数据而设计。
数据库一般会对数据进行增删改查,数据仓库一般只对进行增和查,基本不会修改数据。
当然,数据仓库不仅仅指的是一个存储引擎,而是一套完整的数据建设的方法论,感兴趣的同学请阅读更多的内容。
以上是关于闲聊数据库和数据仓库的区别的主要内容,如果未能解决你的问题,请参考以下文章