专栏首页技术翻译大数据建模方法的比较

大数据建模方法的比较

在DT时代,互联网,智能设备和其他形式的信息技术的爆炸性增长使得数据以同样令人印象深刻的速度增长。这个时代的挑战似乎是如何对所有这些数据进行分类,组织和存储。

为什么需要数据建模?

在图书馆里,我们需要对所有的书进行分类,并将它们摆放在书架上,以确保我们可以轻松地阅读每本书。同样,如果我们有大量的数据,我们需要一个系统或方法来维持一切正常。对数据进行排序和存储的过程称为“数据建模”。

数据模型是组织和存储数据的一种方法。正如Dewey十进制系统在图书馆中组织图书一样,数据模型可以帮助我们根据服务、访问和使用来安排数据。Linux的创始人Torvalds在写一篇关于“什么是优秀的程序员”的文章时提到了数据建模的重要性:“糟糕的程序员关心代码,优秀的程序员关心数据结构和数据之间的关系。”适当的模型和存储环境为大数据提供了以下好处:

• 业绩:良好的数据模型可以帮助我们快速查询所需数据并降低I/O吞吐量。 • 费用:良好的数据模型可以显著减少不必要的数据冗余,重用计算结果,降低大数据系统的存储和计算成本。 • 效率:良好的数据模型可以极大地改善用户体验,提高数据利用率。 • 质量:良好的数据模型使数据统计更加一致,减少了计算错误的可能性。

因此,大数据系统无疑需要高质量的数据建模方法来组织和存储数据,使我们能够在性能、成本、效率和质量上达到最佳平衡。

关系数据库系统与数据仓库

E.F.Codd是关系数据库的创始人,他首先提出了数据库系统的关系模型,并开始研究关系方法和关系数据理论。几乎所有现代公司都开始使用关系数据库来存储和处理数据。这是因为整个一代数据软件如Oracle、Informix和DB2的兴起。数据仓库系统也不例外,许多数据仓库系统通过利用关系数据库的优势来存储和处理数据,甚至使用相同理论的数据模型。

尽管最近大数据存储和计算基础设施的快速增长以及NoSQL技术的日益普及,Hadoop、SPark和阿里巴巴云的MaxCompute仍然使用SQL进行大规模数据处理。数据存储在表中,关系理论用于描述数据之间的关系。但是,根据访问数据的方式,关系数据模型的形式有不同的选项。

OLTP和OLAP系统的建模方法

OLTP系统中的主要数据操作是随机读/写。OLTP系统主要采用满足3NF的实体关系模型来存储数据,解决了数据冗余问题和事务处理中的不一致性问题。OLAP系统中的主要数据操作是批量读/写。 OLAP系统侧重于一次性,复杂的大数据查询的数据集成和性能,以及处理而不是事务处理中的不一致。因此,OLAP系统需要使用不同的数据建模方法。

典型数据仓库建模方法

ER模型

数据仓库之父BillInmon提出的建模方法是设计一个包含整个公司的3NF模型,并通过实体关系(ER)模型描述企业业务,符合3NF的正常形态。数据仓库中的3NF与OLTP系统中的3NF的区别在于,3NF是从公司的角度抽象目标主题,而不是抽象地针对特定业务流程中的实体对象。3NF具有以下特点:

  • 我们需要全面了解公司的业务和数据。
  • 执行可能相当缓慢。
  • 需要建模者具有很强的技能。

要使用ER建模创建数据仓库模型,我们首先需要从整个企业的角度,以主题的方式集成和组合各种系统中的数据。然后,我们需要对数据进行一致性处理,以便在数据的基础上进行分析和决策。然而,数据本身不能直接用于分析或决策。

这种类型的建模有三个阶段:

• 高级建模:高度抽象的模型,主要描述主题之间的关系。我们可以用这个模型来描述公司的概况。 • 中级建模:基于高层模型的详细数据和主题。 • 物理建模(也称为底层模型):根据物理存储的可用性、性能和平台特性,采用中间层模型设计物理特性。它还可以包括组合表或设计分区。

在实践中,ER模型最典型的表示形式是基于金融服务的Teradata发布的金融服务逻辑数据模型(FS-LDM)。通过高度抽象和总结,FS-LDM将金融服务划分为十个主题来设计金融仓库模型。使用FS-LDM,公司可以调整和扩展快速建模实现。

尺寸建模

拉尔夫·金博尔,一位数据仓库大师,向世界介绍了尺寸建模。他的著作《‘The Data Warehouse Toolkit — The Complete Guide to Dimensional Modeling》是数据仓库工程领域中数据仓库建模的经典之作。维度建模解决了分析决策和需求分析的问题。因此,它主要关注于允许用户在处理大型复杂查询时快速完成需求分析,同时保持高性能。维数模型的典型例子是星型模型和雪花模型。模型的设计包括以下步骤: • 选择涉及分析和决策的应用程序。应用程序可以是单个业务事件,例如,发出退款、事件状态(例如,帐户余额或包含一系列相关事件的进程)。这主要取决于我们看的是一系列事件、当前状态还是事件流的效率。

• 选择粒度。在事件分析中,需要预先确定所有分析的细分程度,以确定粒度。粒度是维度的组合。

• 确定维度表。选择粒度后,设计基于粒度的维度表,包括维度属性。此表用于分析期间的分组和筛选。

• 选择事实。确定在分析过程中必须测量的指标。

数据仓库模型

丹·伦斯泰特以ER模型为基础,建立了数据仓库模型。该模型的设计对于数据集成是有用的,但不能直接用于数据分析和决策。

该模型强调建立一个可审计的基本数据层,侧重于数据历史、可追溯性和原子性。它不需要过度的一致性处理或集成。同时,它以主题、结构化的方式组织公司数据,并引入进一步的范式处理来优化模型,使其随着源系统的变化而适当地缩放。数据仓库模型由以下内容组成:

• 枢纽:枢纽是公司的核心业务实体。它由实体密钥、数据仓库串行代理密钥、加载时间和数据源组成。

• 链接:链接表示集线器之间的关系。数据仓库模型与ER模型最大的区别是将关系抽象为一个独立的单元,从而提高了模型的可扩展性。链接可以直接描述1:1、1:n和n:n之间的关系,而不作任何更改。它由集线器代理键、加载时间和数据源组成。

• 卫星:卫星包括对枢纽的详细描述。一个中心可能有多个卫星。卫星由集线器代理键、加载时间、源类型和详细的集线器描述组成。

与ER模型相比,设计和创建数据仓库模型更容易,而且数据仓库模型的ETL处理是可配置的。为了更好地理解数据仓库的概念,丹·伦斯泰特给了我们一个类比:想象一个枢纽是人类成年人的骨骼,链接是连接骨骼的韧带,卫星是血肉之躯。

锚模型

锚模型进一步规范了数据库模型。LarsRnnback最初的意图是设计一个高度可扩展的模型。他的核心理念是,所有的扩展都涉及到添加而不是修改。因此,他将模型归一化为6NF,成为K-V结构模型。锚固模型由以下几个部分组成:

• 锚:锚与数据仓库模型中的集线器相似。它们代表业务实体,只有主键。 • 属性:属性与数据仓库模型中的卫星相似,但更加规范化。它们在K-V结构中.每个表只描述一个锚点的属性。 • 领带:领带表示锚与使用表进行描述之间的关系。领带类似于数据仓库模型中的链接,可以提高通用模型的扩展能力。 • 结:纽结代表可以由多个锚共享的属性,例如,枚举属性和公共属性,如性别和状态。 我们还可以将这四个基本对象细分为历史对象和非历史对象,其中历史对象使用时间戳记录数据的变化,并保存多个记录。

这种划分允许Anchor模型的作者实现高度的可伸缩性。但是,该模型也增加了联接查询操作的数量。创建者认为,数据仓库中的分析和查询只基于一小部分字段执行。这类似于数组存储结构,它可以显著减少数据扫描,减少对查询性能的影响。一些具有消除表功能的数据库,例如MariaDB,可以大大减少联接操作的数量。然而,这仍有待讨论。

阿里巴巴集团大数据建模综述

阿里巴巴集团(AlibabaGroup)从发展之初就一直把大数据(BigData)作为其战略目标。事实上,阿里巴巴的业务在很大程度上依赖于大数据作为运营支持,那么阿里巴巴用什么方法来创建数据仓库模型呢?阿里巴巴的数据仓库建模经历了几个发展阶段。

第一阶段:早在业务完全由应用程序驱动的时候,阿里巴巴就在Oracle的基础上建立了第一个数据仓库系统。当时数据的目的是生成报告。管理员将数据同步到与源结构相同的模型中的Oracle数据库(也称为ODS层)。根据这些ODS数据,数据工程师能够收集和处理统计数据。基本上没有系统建模的方法。通常的做法是完全通过Oracle数据库存储和处理数据。然而,为了处理一些历史数据,管理员使用建模方法,因为它将根据几个维度缓慢变化。在这一阶段,数据结构只有两层,即ODS和DSS。

第二阶段:随着阿里巴巴业务的增长,数据量也急剧增加。此时,性能成为一个主要考虑因素。作为回应,阿里巴巴将Greenplum引入MPP结构系统。与此同时,阿里巴巴的数据团队也开始在一定程度上优化数据架构,希望通过改变技术、消除冗余、提高数据一致性来改变“烟囱”开发模式。传统行业的数据仓库工程师试图将工程领域中流行的ER模型和尺寸建模技术应用于阿里巴巴集团,并构建了一个四层模型体系结构。这些层包括操作数据层(ODL)、基本数据层(BDL)、接口数据层(IDL)和应用程序数据层(ADL)。

ODL与源系统是一致的,而BDL则期望引入ER模型,加强数据集成,并创建一致的基本数据模型。IDL又构成了基于尺寸建模方法的MART层,ADL根据表示需求完成了个性化的数据组装。

在此期间,我们遇到了许多困难和挑战,因为我们试图建立有效的ER模型。由于互联网业务发展迅速,员工流失率往往很高,而专业知识很少是全面的,所以我们无法完成我们的ER模型。然而,这是一个学习过程。我们逐渐认识到,建立ER模型对于一个不成熟、变化迅速的公司来说是危险的,也是不恰当的。

第三阶段:阿里巴巴集团(AlibabaGroup)的业务以及因此而来的数据业务继续增长,像Hadoop这样的分布式存储计算平台也在飞速发展。同时,阿里巴巴集团自己的分布式计算平台MaxCompute的开发也在进行中。在开发分布式计算平台的同时,我们也开始构建第三代模型体系结构。我们需要找到一种数据建模方法,随着阿里巴巴业务的发展,它将是可持续的,并且能够充分利用分布式计算平台。确定了一种以Kimball维数法为基础的建模方法,对核心方法进行了扩展,建立了一个公共层建模数据体系结构系统。

构建公共数据层的目的是解决共享数据存储和计算的问题。阿里巴巴集团(AlibabaGroup)现在已经成长为多个业务部门,它产生了大量的数据,每年增长近2.5倍。这种扩张速度远远超过了企业本身的增长速度,并带来了令人担忧的成本和支出增长。

阿里巴巴公共层的构建由统一的数据管理和集成方法系统(内部称为“OneData”)引导,其中包括一致的指标定义系统,模型设计系统和辅助工具。

原文标题《A Comparison of Data Modeling Methods for Big Data》

作者:Leona Zhang

译者:lemon

不代表云加社区观点,更多详情请查看原文链接

原文链接:https://dzone.com/articles/a-comparison-of-data-modeling-methods-for-big-data

原文作者:Leona Zhang

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 5分钟理解人工智能与机器学习的区别

    人工智能不是一个新名词,它已有数十年历史。从80年代初开始,计算机科学家设计了能够学习和模仿人类行为的算法。

    liuxuewen
  • 如何可视化和理解MongoDB数据

    为应用程序选择数据库可能是一个真正的挑战。不同的数据库设计服务于不同的目的,在这种情况下,由于他们的僵化模式和对数据类型的约束,关系数据库不能完全满足开发人员的...

    liuxuewen
  • 深度学习和神经网络的六大趋势

    神经网络的基本思想是模拟计算机“大脑”中的多个相互关联的细胞,这样它就可以从环境中学习、识别不同的模式,并做出与人类相似的决定。

    liuxuewen
  • 常用的模型集成方法介绍:bagging、boosting 、stacking

    本文介绍了集成学习的各种概念,并给出了一些必要的关键信息,以便读者能很好地理解和使用相关方法,并且能在有需要的时候设计出合适的解决方案。

    磐创AI
  • 常用的模型集成方法介绍:bagging、boosting 、stacking

    本文介绍了集成学习的各种概念,并给出了一些必要的关键信息,以便读者能很好地理解和使用相关方法,并且能够在有需要的时候设计出合适的解决方案。

    机器之心
  • 常用的模型集成方法介绍:bagging、boosting 、stacking

    本文介绍了集成学习的各种概念,并给出了一些必要的关键信息,以便读者能很好地理解和使用相关方法,并且能够在有需要的时候设计出合适的解决方案。

    小草AI
  • 实现一个简单的redux

    上面的代码虽然实现了修改, 但是却没有通知到所有使用到name的地方上,我们通过发布订阅来实践一下

    JianLiang
  • 热点 | 六月Github热点项目库总结

    磐创AI
  • 使用Docker搭建Anaconda Python3.6的练习环境

    版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn....

    Tyan
  • python复制目录

     最近有个windows下批量更新文件的小需求,将一个目录下的所有文件覆盖到另一个目录下,首先想到shutil模块,shutil模块主要用于文件夹的操作。其中c...

    py3study

扫码关注云+社区

领取腾讯云代金券