可扩展数据仓库架构维度

赞成理智

可扩展的数仓架构

今天的数据仓库系统使得分析师可以很容易地访问集成的数据。为了实现这一点,数据仓库开发团队必须根据用户的需求对数据进行处理和建模。开发数据仓库的最佳方法是迭代开发过程,这意味着数据仓库的功能是按照业务用户的要求在迭代(有时称为sprint或cycle)中设计、开发、实现和部署的。

在每次迭代中,更多的功能被添加到数据仓库中。这与“大爆炸”方法相反,“大爆炸”方法是在一个大流程中开发所有功能,最后作为一个整体部署。

然而,在执行项目时,即使使用迭代方法,添加另一个功能的工作量(以及与之相关的成本)通常也会增加,因为必须考虑现有的依赖关系。

图2.1显示,实现第一个信息集市的工作量相对较低。但是在实现第二个信息集市时,开发团队必须维护现有的解决方案并处理现有的依赖关系,例如数据源的集成是利用第一个信息集市的数据或者使用现有的业务系统的数据表。为了确保以前构建的功能在为第二个信息集市部署新功能时不会中断,必须重新测试旧功能。在许多情况下,当将新资源添加到整个解决方案时,需要重构现有解决方案以维护各个信息集市的功能。所有这些活动都增加了创建第二个信息集市的工作量,同样也增加了创建任何后续信息集市或其他新功能的工作量。
图 2.1 维护的噩梦
图 2.1 维护的噩梦

图2.1描述了这一额外工作:一旦创建了第一个信息集市,该解决方案便会进入所有现有功能的维护模式。下一个项目实施另一个信息集市。要实现第二个信息集市,工作包括添加新功能和维护现有功能。由于依赖关系,现有的功能需要定期重构和重新测试。
换句话说,许多数据仓库架构的可扩展性,包括在《数据仓库架构》中介绍的那些架构,并不是最优的。此外,典型的数据仓库架构通常缺少可扩展性的架构维度,而不是所描述的可扩展性的数据维度。我们将在下一节中讨论这些架构维度

可扩展数据仓库架构维度

数据仓库系统的业务用户希望加载和准备越来越多的数据,包括数据的种类、数量和速度。此外,典型数据仓库环境的工作负载也在不断增加,特别是当数据仓库的初始版本获得了第一批用户的成功时。因此,可扩展性具有多个架构维度。

工作负载

企业数据仓库(EDW)是一个典型企业中“迄今为止规模最大、计算量最大的业务应用”。 EDW系统由庞大的数据库组成,包含从多个GB到TB存储的历史数据。成功的EDW系统在系统的工作负载方面有两个问题:第一,它们经历了数据量和应用工作负载的快速增长;第二,并发用户数量的增加,为了满足性能要求,EDW系统在大规模并行计算机上实现,例如大规模并行处理(MPP)或对称多处理器(SMP)系统环境和集群以及并行数据库软件。 事实上,如果没有大规模的并行硬件和并行数据库软件来支持它们,大多数的大型数据仓库就无法实现。

为了处理请求的工作负载,需要更多的并行硬件或并行数据库软件。数据库的逻辑和物理设计必须针对数据量进行优化。

数据复杂性

企业数据仓库可扩展的另一个维度是数据复杂性。以下因素有助于数据复杂性的增长:

  • 数据的多样性:如今,企业组织获取的不仅仅是传统的数据(例如:关系或主机)主数据或事务数据。有越来越多的半结构化数据,例如电子邮件、电子表格或HTML和XML文件,以及非结构化数据,如文档收集、社交网络数据、图像、视频和声音文件。另一种类型的数据是传感器和机器生成的数据,这可能需要特定的处理。在许多情况下,企业试图从非结构化或半结构化数据中获取结构化信息来增加有业务价值的数据。虽然文件可能有一个结构,但文件的内容没有结构。例如,如果不完全处理视频的所有帧并构建元数据标签来指示内容中的人脸出现在哪里,就不可能在视频中找到特定人物的脸。
  • 数据量:公司生成和积累新数据的速度正在增加。例子包括来自网站或社交网络的内容、文档和电子邮件收集、网络日志数据和机器生成的数据。数据量的增加导致更大的数据集,这些数据集可以运行到数百TB,甚至可以进入PB或更高的数据。
  • 数据的速度:不仅数据的种类和规模增加,而且数据创建的速度也迅速增加。例如,来自证券交易所等金融市场的金融数据。这些数据是以非常高的速度生成的,并立即进行分析,以应对市场的变化。其他例子包括用于欺诈检测的信用卡交易数据和来自闭路电视(CCTV)的传感器数据或数据,这些数据用于实时或近实时的自动视频和图像分析。
  • 数据的真实性(可信度):为了对数据有信心,它必须具有强大的可追溯的数据治理谱系和健壮的数据集成。

分析的复杂性

由于大量的可用的数据具有高速和多样性,企业需要不同和更复杂的分析任务来获得解决业务问题的洞察力。其中一些分析要求以原始数据仓库开发人员无法预见的方式编制数据。 例如,应该输入数据挖掘算法的数据应该在数据的多样性、规模和速度方面具有不同的特性。
考虑零售营销的例子:当从零售商店转移到需要更详细的客户洞察力的在线渠道时,活动的准确性和及时性需要提高:

    • 为了确定客户的细分领域和购买行为,企业可能需要对客户人口统计数据和交易数据进行历史分析和报告。
    • 交叉销售机会可以通过分析市场篮子来确定,这些篮子显示了可以一起销售的产品。

      • 要了解客户的在线行为,需要点击流分析。这可以帮助向网站的访问者提供高卖的优惠。
      • 鉴于大量的社交网络数据和用户生成的内容,企业可以利用这些数据,即对产品审查、评级、好恶、评论、客户服务互动等数据进行分析。

    这些例子应表明,为了解决这种新的和复杂的分析任务,需要不同复杂性的数据源。 此外,混合结构化和非结构化数据变得越来越常见。

    查询复杂性

    商业智能(BI)供应商选择关系型数据库管理系统(RDBMS)来存储和管理仓库数据时,这是一个理所当然的选择。关系型数据库提供了简单的数据结构和高级的、面向集合的语言,使它们成为数据仓库应用程序的理想选择。数据库引擎中的SQL语言处理器将SQL语句映射到并行的低级别操作中,以实现更好的查询性能(加速),并在满足所需性能水平(扩展)的同时,为增加的工作负载启用增量增长。许多RDBMS,如SQLServer,都是针对数据仓库应用程序进行优化的,例如通过应用启发式方法来定义星型模型查询模式,即使用SQL优化器来提高数据仓库应用程序的查询性能。SQLServer还使用先进的筛选技术,通过使用位图显示计划操作符等特性来提高查询性能。然而,这些特性中的一些只有在查询语句遵循某些准则时才可用(例如仅在INNER连接上使用equi-join条件)。

    然而,在某些情况下,对数据仓库的查询可能变得复杂,而且,考虑到数据仓库的规模,可能需要很长时间才能完成。例子包括时间序列分析和对关系OLAP立方体的查询。对于业务分析师来说,数据仓库的缓慢响应时间是不可接受的,因为这严重限制了生产力。

    可用性

    数据仓库团队负责整个数据仓库的可用性,包括业务用户使用的数据集市、报表、OLAP立方体和任何其他前端。在大多数情况下,双方都签署了服务级别协议(SLA),该协议记录了业务的需求,是数据仓库团队的任何可用性规划的基础。

    增加的功能可能影响数据仓库系统的可用性。一个例子是添加新的数据源,这些数据源必须加载并集成到一个新的数据集市中。然而,这将延长加载所有数据源和构建数据集市所需的时间。负载的并行化是解决问题的一个方法,因为增加更多的计算资源可能会确保系统的可用性。然而,“仅仅添加新的计算能力”的能力必须设计到数据仓库中。

    此外,所有主要的关系数据库管理系统,包括SQLServer2014的企业版,都提供了许多功能,如分区和快照,可以帮助您满足业务用户的可用性要求。另一种选择是创建故障转移集群,以便在发生紧急时提供替代服务器。

    安全

    随着数据集的增长,对数据安全的需求也在增长,事实上,对数据安全的需求相对于数据集的大小和数据的多样性呈指数增长。安全性增加了系统的复杂性,无论是存储数据还是检索数据。数据集越大,就越有可能有人在世界其他地方没有注意到的情况下破坏安全。今天和明天都最优最可扩展的数据仓库会从项目开始就具有正确的安全级别。简单地向这个领域抛出NoSQL并不能解决这些问题;事实上,它会加剧这些问题。
    商业智能DataVault2.0系统旨在协助解决安全问题,利用在数据模型中提供直接的集成点,利用实现层,利用架构和项目组件的所有方法。

    阅读 966

    全栈开发,后端主要java,前端react、vue、mui;大数据学习中,主要致力于数仓研究和架构设计,欢迎大家...

    1 声望
    1 粉丝
    0 条评论

    全栈开发,后端主要java,前端react、vue、mui;大数据学习中,主要致力于数仓研究和架构设计,欢迎大家...

    1 声望
    1 粉丝
    文章目录
    宣传栏