更新时间:2023-03-08 GMT+08:00

为什么要使用数据仓库?

现状和需求

大量的企业经营性数据(订单,库存,原料,付款等)在企业的业务运营系统以及其后台的(事务型)数据库中产生的。

企业的决策者需要及时地对这些数据进行归类分析,从中获得企业运营的各种业务特征,为下一步的经营决策提供数据支撑。

困难

对数据的归类分析往往涉及到对多张数据库表数据的同时访问, 即需要同时锁住多张可能正在被不同事务更新的表单。这对业务繁忙的数据库系统来说可能是一件非常困难的事情 。

  • 一方面很难把多张表同时锁住,造成复杂查询的时延增加。
  • 另一方面如果锁住了多张表,又会阻挡数据库表单更新的事务,造成业务的延时甚至中断。

解决方案

数据仓库主要适用于企业数据的关联和聚合等分析场景, 并从中发掘出数据背后的商业信息供决策者参考。这里的数据发掘主要指涉及多张表的大范围的数据聚合和关联的复杂查询。

使用数据仓库,通过某个数据转换(ETL)的过程,业务运营数据库的数据可以被拷贝到数据仓库中供分析计算使用。同时支持把多个业务运营系统的数据汇集到一个数据仓库中。这样数据可以被更好地关联和分析,从而产生更大的价值。

数据仓库一般来说采用了一些和标准的面向事务的数据库(Oracle,MS SQL Server,MySQL等)不一样的设计,特别是针对数据的聚合性和关联性做了特别的优化,有些时候为了这些优化甚至可能会牺牲掉一些标准数据库的事务或者数据增删改的功能或者性能。因此,数据仓库和数据库的使用场景还是有所不同的。事务型数据库专注于事务处理(企业的业务运营),而数据仓库更擅长于复杂的数据分析。各司其职,互不干扰。简单一句话可以把它理解为,数据库主要负责数据更新,数据仓库主要负责数据分析。