什么是数据仓库?
数据仓库是可用于帮助组织做出关键业务决策的大量数据集合。
下面是该术语的更精确定义,由 Bill Inmon 创造(被许多人认为是“数据仓库之父”):
数据仓库是一个面向主题的、集成的、非易失的和随时间变化的数据集合,以支持管理层的决策。
这里的关键点是数据仓库包含的数据是:
- 以学科为导向
- 融合的
- 非易失性
- 时变
这就是每一个的含义。
面向主题
这意味着数据基于特定的主题领域,而不是组织的持续运营。
例如,主题领域可能包括:
- 销售量。
- 产品。
- 订单。
- 出货量。
- 工作努力。
- 开发票。
- 会计。
- 人力资源。
- 还有很多。
融合的
数据可以来自各种不同的地方,有许多不同的格式和约定。一些数据可能来自遗留系统。其他数据可能来自组织内单个部门维护的数据库。
数据仓库应该以一种格式将所有这些集成到一个地方。
例如,客户数据可能来自三个不同的数据库。每个数据库都有自己的命名约定,因此它们之间存在不一致。一个人可能会使用客户ID 对于唯一标识符字段。另一个可能使用cust_id而另一个只是ID. 数据仓库的工作是将这些字段合并到一个字段、一个表、一个数据库中。
非易失性
这意味着数据仓库中的数据永远不会改变。一旦它被添加到仓库中,它应该保持不变。这使企业可以对数据的准确性充满信心地查询和分析数据。
时变
保存在数据仓库中的数据是历史数据。数据仓库包含可以在给定时期内查询和分析的过去数据。这与可能仅包含当前数据(即旧数据已被移动或删除)的事务数据库形成对比。
例如,企业可以使用数据仓库来查看其客户的所有过去地址。也许它想找到所有居住在特定区域的客户。事务数据库可能不包含所有过去的地址——它可能只包含当前地址。
所以这就是数据仓库可以派上用场的地方。它可以存储不再在主要事务系统中的旧记录。
话虽如此,数据仓库也可以包含当前数据。
构建数据仓库
首先需要建立一个数据仓库。这可能是一个非常耗时的过程,而且通常非常昂贵。
以下是构建数据仓库所涉及的一些主要任务。
识别数据源
需要确定数据源。这些可能分散在整个业务中。各个部门可以维护自己的“客户”数据库,该数据库与主要的公司数据库/CRM 系统没有任何联系。
数据也可以存在于文件系统中(即不在DBMS中),也可以以任何其他形式存在。这些都需要在设计数据仓库系统之前确定。
设计数据仓库
需要设计数据仓库。数据仓库的设计将取决于将要存储的数据的类型、将针对它运行的查询、数据量、数据的来源以及更多因素。
设计阶段需要涉及各个业务部门和/或用户社区。在确定设计之前可能需要多次迭代。花时间把这件事做好很重要,因为一旦建立了数据仓库,改变它的设计可能是一项艰巨的任务。
数据采集
数据需要从各种(通常是不同的)系统移入数据仓库。这通常涉及数据清理,以确保数据从一开始就以一致的形式输入仓库。它还可能涉及数据聚合(以摘要形式收集和表达的地方——而不是存储每一个细节)。数据聚合可以减少存储需求,但也降低了可分析数据的粒度。
数据更新
一旦建立了仓库,就需要不断地从源系统更新数据。
通常,数据复制应该只关注自上次更新以来发生变化的数据。否则,复制过程会在每次运行时尝试更新所有系统中的所有数据时陷入困境。
此外,一些数据仓库是实时或接近实时更新的,因此想象一下,每次更改单个记录时都尝试更新整个数据库。然后在几毫秒后更改另一条记录时再次更新数据库……
根据数据源的不同,识别自上次更新以来发生变化的记录可能是一个相当大的挑战。这个概念通常被称为变更数据捕获 (CDC)。
一个设计良好的数据库将包含协助 CDC 的机制。这些可以包括:
- 行上的时间戳(例如,通过最近更新时间列或类似)
- 行上的版本号
- 行上的状态指示器
- 以上的组合(即时间戳、版本号和行上的状态指示符)
- 表上的触发器
- 事件编程
- 扫描数据库的事务日志
商业智能 (BI) 工具
一旦数据仓库启动并运行,现在可以使用为组织的特定需求量身定制的专用工具对其进行查询和分析。这些工具需要作为数据仓库项目的一部分进行识别和构建/购买。
此类工具通常被称为商业智能 (BI) 工具。
毫无疑问,将来总会发布更高级的工具,并且可以根据具体情况进行评估。建立数据仓库这一事实几乎肯定会使向系统中引入新的 BI 工具变得更加容易。