一、什么是数据仓库
数据仓库:通俗来讲,是专门为了支持公司各个层级决策而建的数据库,并将用到的数据通过一定方式同步到数据仓库中,通过一定的处理,最终转化为目标数据,提供给运营、数据分析人员、决策层等。
二、为什么要单独搞一个数据仓库?
1、集成数据的问题
需要集成多个系统的数据,例如人力、客户管理、销售、TMS、WMS、ERP等多个系统,数据仓库能够将分散的数据进行集中存储和管理,提供一个统一的数据视图,解决数据孤岛问题,提高数据利用效率
2、避免影响业务系统使用
数据仓库和业务系统数据库要严格隔离。数据仓库通常是大数据量计算,很容易将内存、CPU等资源耗尽引发相关数据库问题,此时只需要等数据库恢复、优化相关任务再次执行即可,但是数据库停摆对于业务系统来说是致命的。
3、提高数据查询效率
数据仓库通过对数据进行预处理,提高了数据查询的效率。它采用了多种优化技术,如聚合、索引、分区等,使得用户能够在短时间内对海量数据进行复杂的查询和计算
4、数据一致性问题
虽然现在大部分企业开发人员都有主数据的意识了,如人员信息主要由人力系统产生,则其他系统的人员编码、名称等信息从人力系统同步,但是在一些情况下,还是会产生不同的系统中编码不一致的情况,数据仓库需要将一定的手段将编码一致化,这样才能串联多个系统的数据。
5、性能要求不满足
通常业务数据库以MySQL为主,但是数据仓库需要大数据量的计算(以MySQL为主的业务数据库并不能满足性能),一般以分布性数据库为主,目前大型企业采用Hive数据仓库、Spark计算引擎,小型公司也主要以PostgreSQL、Greenpum、OceanDB等数据库为主
三、数据仓库如何开发?
1、了解数据仓库与业务数据库的不同
2、数据仓库选型(数据存储、ETL工具、调度工具、计算引擎)
3、规划数据仓库(数据仓库分层、相关规范、主题域划分、一致性维度/事实),注意只是规划,并不建议一开始就按照规划把所有的事项全部做完,具体工作的开展还是某个需求为切入点开展。
4、以一个需求为出发点,开发数仓的一部分内容,通过不断的需求不断完善数仓。
5、数据仓库的运维。