• 阅读: 480 回复: 0
    机灵小不懂

    闲聊数据库和数据仓库的区别

    楼主 发表于 2019-09-05 09:48:20

    最近群里童鞋们在数据库和数据仓库的区别,因此简单做一些整理。

    0x01 概念上的区别

    数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。        ————百度百科

    数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。        ————百度百科

    直观上理解:相同点是两者都是存储数据。不同点是数据库主要是基本的、日常的事务处理,例如银行交易;数据仓库,支持复杂的分析操作,侧重决策支持。

    0x02 举个例子

    举个最常见的例子,以我们常举例的电商来讲,我们侧重于从没有数据仓库到有数据仓库的演变阶段:

    第一阶段:无分析需求阶段

    电商早期,基本不需要太多数据分析,先跑起来系统就行,这时候买一套电商系统,搞点服务器,加一两个研发就能跑起来了。这时候对数据的需求就是只需要有个数据库就行。最多就是看看营业额就够,不需要数据仓库。

    第二阶段:简单统计需求阶段

    网站做大后流量来了,客户和订单都多起来了,普通查询已经有压力了,这个时候就需要升级架构变成多台服务器和多个业务数据库(量大+分库分表),这个阶段的业务数字和指标还可以勉强从业务数据库里查询。

    此时仍不太需数据仓库,数据库勉强够用,定时从从库里面统计数据就可以。

    第三阶段:复杂统计需求阶段

    随着业务指数级的增长,数据量的会陡增,数据来源也越来越多样,这时已经不单单是交易类数据了,用户点击、和图片等数据都多了起来。

    同时公司角色也开始多了起来,开始有了 各种老板,各种运营、市场、产品的同学,大家需要面临的问题越来越复杂,越来越深入,对数据的需求也越来越复杂。而复杂的分析类计算势必会对线上的数据库造成影响。

    因为,业务数据库中的数据结构主要是为了完成交易而设计的,不是为了而查询和分析的便利设计的。业务数据库大多是读写优化的,即又要读,也要写。因此对于大量数据的读操作和复杂计算是支持不足。

    而怎么解决这个问题,此时我们就需要建立一个数据仓库了。

    0x03 技术上的区别

    有了上面的分析,大家可能感觉还是比较虚,那我们举一些现实工作中遇到的技术,来看一下数据库和数据仓库的区别:

    • 流行的数据库:MySQL、Oracle、SqlServer等
    • 流行的数据仓库:Hive、Impala、Greenplum等

    划分并不绝对,比如很多公司也会用Oracle来做数据仓库,但是基本没有公司用Hive来当作业务库来使用。

    0x04 模型上的区别

    关于模型的区别,我写过一篇文章专门分析数据仓库和数据库建模的区别,可以参考 漫谈数据仓库和范式

    0xFF 总结

    总结一下:

    1. 数据库是面向事务的设计,数据仓库是面向主题设计的。
    2. 数据库一般服务于业务系统的,数据仓库一般是服务于分析系统的。
    3. 数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。
    4. 数据库设计是尽量避免冗余,数据仓库在设计是有意引入冗余。
    5. 数据库是为捕获数据而设计,数据仓库是为分析数据而设计。
    6. 数据库一般会对数据进行增删改查,数据仓库一般只对进行增和查,基本不会修改数据。

    文章转载自:木东居士

热门文章

一篇搞懂TCP、HTTP、Socket、Socket连接池

澜学院|Mock工具wiremock-py

Giraph源码分析(七)—— 添加消息统计功能

Giraph源码分析(八)—— 统计每个SuperStep中参与计算的顶点数目

最新文章

聊聊数字化与信息化的区别

常用机器学习算法优缺点分析

光流估计:从传统方法到深度学习

如何利用 Flink CDC 实现数据增量备份到 Clickhouse

  • 未登录

    回复楼主

    登录后可回复
    /1000