(数据架构)

Posted 四月天03

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(数据架构)相关的知识,希望对你有一定的参考价值。

一、前言

本文是《DAMA数据管理知识体系指南》第四章的读书笔记,对数据管理中的数据架构构建进行讲解阐述。按照CDMP考试认证的内容占比为6%,虽然占比不高,但是却是较为关键的内容,对大家在进行数据模块架设和规划时有较大的帮助。

二、内容结构

本章主要讲述数据管理中数据架构的相关内容,对数据架构的概念、业务驱动因素、数据架构的类型和设计实施以及架构治理等内容进行讲解。本章内容面向读者更多的是数据平台、数据体系设计相关的同学以及专职的数据管理同学(数据架构师)。其中的内容相对抽象,概念解释性内容较多,案例描述较少,但是其中的架构设计、实施、治理思想对大家应该有较大的帮助。为了方便大家理解,其整体内容结构图如下所示:

三、主要内容

1.引言

架构是对组件要素有组织地设计,旨在优化整个机构或系统的功能、性能、可行性、成本和用户体验。数据架构的主要目标是有效管理数据,以及有效地管理存储和使用数据的系统。数据架构主要需要考虑如下几个方面:数据架构的成果(也就是常说的数据架构的构建)、数据架构的活动(用于形成、部署、和实现数据架构的目标)以及数据架构的行为。

数据架构是数据管理的基础,由于大多数组织拥有的数据超出了个人可以理解的范围,因此有必要在不同抽象层上描述组织的数据,以便更好地了解数据,帮助管理层做出决策。一

企业架构设计实战6 数据架构

什么是数据架构?

数据架构将业务需求转化为数据和系统需求,并寻求管理数据及其在企业中的流动。

数据架构定义

根据 The Open Group Architecture Framework (TOGAF),数据架构描述了组织的逻辑和物理数据资产和数据管理资源的结构。它是企业架构的一个分支,包括管理组织中数据的收集、存储、排列、集成和使用的模型、策略、规则和标准。组织的数据架构是数据架构师的职权范围。

数据架构目标

数据架构的目标是将业务需求转化为数据和系统需求,并管理数据及其在企业中的流动。如今,许多组织都在寻求对其数据架构进行现代化改造,以此作为充分利用 AI 和实现数字化转型的基础。咨询公司 McKinsey Digital 指出,由于流程复杂性而非技术复杂性,许多组织未能实现其数字化和 AI 转型目标

数据架构原则

根据 Splunk 产品管理、核心产品副总裁、AtScale 前产品管理副总裁 Joshua Klahr 的说法,六项原则构成了现代数据架构的基础:

  • 数据是共享资产。现代数据架构需要消除部门数据孤岛,并为所有利益相关者提供公司的完整视图。

  • 用户需要足够的数据访问权限。除了打破孤岛之外,现代数据架构还需要提供接口,使用户能够使用适合其工作的工具轻松使用数据。

  • 安全是必不可少的。现代数据架构必须针对安全性进行设计,并且必须支持直接对原始数据的数据策略和访问控制。

  • 共同的词汇确保共同的理解。共享数据资产(例如产品目录、会计日历维度和 KPI 定义)需要通用词汇表来帮助避免分析过程中的争议。

  • 应该整理数据。投资于执行数据管理的核心功能(建模重要关系、清理原始数据以及管理关键维度和度量)。

  • 应针对敏捷性优化数据流。减少必须移动数据的次数,以降低成本、提高数据新鲜度并优化企业敏捷性。

数据架构组件

据 IT 咨询公司 BMC 称,现代数据架构由以下组件组成:

  • 数据管道。数据管道是收集、移动和优化数据的过程。它包括数据收集、提炼、存储、分析和交付。

  • 云储存。并非所有数据架构都利用云存储,但许多现代数据架构使用公共、私有或混合云来提供敏捷性。

  • 云计算。除了使用云进行存储之外,许多现代数据架构还利用云计算来分析和管理数据。

  • 现代数据架构使用 API 来轻松公开和共享数据。

  • 人工智能和机器学习模型。AI 和 ML 用于实现数据收集、标记等任务的系统自动化。同时,现代数据架构可以帮助组织解锁大规模利用 AI 和 ML 的能力。

  • 数据流。数据流将数据连续地从源流向目标,以进行实时或近实时的处理和分析。

  • 容器编排。诸如开源 Kubernetes 之类的容器编排系统通常用于自动化软件部署、扩展和管理。

  • 实时分析。许多现代数据架构的目标是提供实时分析,即在新数据到达环境时对其执行分析的能力。

数据架构与数据建模

根据数据管理知识手册 (DMBOK 2),数据架构定义了管理数据资产的蓝图,方法是与组织战略保持一致,建立战略数据需求和满足这些需求的设计。另一方面,DMBOK 2 将数据建模定义为“以称为数据模型的精确形式发现、分析、表示和传达数据需求的过程”。

虽然数据架构和数据建模都试图弥合业务目标和技术之间的差距,但数据架构是关于寻求理解和支持组织功能、技术和数据类型之间关系的宏观视图。数据建模更专注于特定系统或业务案例。

数据架构框架

有几种企业架构框架通常用作构建组织数据架构框架的基础。

  • DAMA-DMBOK 2. DAMA International 的数据管理知识体系是专门用于数据管理的框架。它提供了数据管理功能、可交付成果、角色和其他术语的标准定义,并提出了数据管理的指导原则。

  • Zachman 企业架构框架。 Zachman 框架是 1980 年代由 IBM 的 John Zachman 创建的企业本体。Zachman 框架的“数据”列包含多个层次,包括对业务重要的架构标准、语义模型或概念/企业数据模型、企业/逻辑数据模型、物理数据模型和实际数据库。

  • 开放组架构框架 (TOGAF)。TOGAF 是一种企业架构方法,为企业软件开发提供高级框架。TOGAF 的 C 阶段包括开发数据架构和构建数据架构路线图。

现代数据架构最佳实践

现代数据架构的设计必须能够利用人工智能 (AI)、自动化、物联网 (IoT) 和区块链等新兴技术。Protiviti 技术咨询高级总监 Dan Sutherland 表示,现代数据架构应遵循以下最佳实践:

  • 云原生。现代数据架构的设计应支持弹性扩展、高可用性、动态数据和静态数据的端到端安全性,以及成本和性能可扩展性。

  • 可扩展的数据管道。为了利用新兴技术,数据架构应支持实时数据流和微批量数据突发。

  • 无缝数据集成数据架构应使用标准 API 接口与遗留应用程序集成。它们还应该针对跨系统、地域和组织共享数据进行优化。

  • 实时数据启用。现代数据架构应支持部署自动化和主动数据验证、分类、管理和治理的能力。

  • 解耦和可扩展。现代数据架构应设计为松耦合,使服务能够独立于其他服务执行最少的任务。

数据架构利用数据服务和 API,将来自原有系统、数据湖、数据仓库、sql 数据库和应用程序的数据汇集在一起,提供对业务绩效的整体视图。 与这些单独的数据存储系统相比,数据架构旨在为整个数据环境带来更大的流动性,应对数据存放和处理位置问题 - 数据量增长会提高迁移的难度。 数据架构消除数据迁移、转换和集成中技术复杂性的抽象意义,让整个企业都可以使用数据。

数据结构架构围绕平台中的数据与需要它的应用程序松散耦合的想法进行操作。 一个多云环境中的数据架构示例是,一种云(如 AWS)管理数据采集,另一个平台(如 Azure)负责监督数据转换和使用。 然后可能有第三个供应商(如 IBM Cloud Pak for Data)来提供分析服务。 数据架构将这些环境连接在一起,可以创建统一的数据视图。

以上只是一个示例。 由于不同企业有不同需求,因此没有唯一的数据架构。 不同企业有不同数量的云提供商,实施的数据基础架构也不尽相同。 但使用这种数据框架的企业,其架构具有共性,这是数据架构独有的特点。 Forrester(链接位于 ibm.com 外部)在"企业数据架构支持 DataOps"报告中描述了数据架构的六个基本组件。 这六层包括以下内容:

  1. 数据管理层:该层负责数据监管和数据安全。

  2. 数据采集层:开始汇总云数据,寻找结构化和非结构化数据之间的联系。

  3. 数据处理层:细化数据,以确保提取数据时只出现相关数据。

  4. 数据编排层:为数据架构执行一些最重要的工作 - 转换、集成和清理数据,供企业内部团队使用。

  5. 数据发现层:为集成不同数据源的数据提供新机会。 例如,它可能找到在供应链数据市场和客户关系管理数据系统中连接数据的方法,为客户提供产品提供新的机会或提高客户满意度的方法。

  6. 数据访问层:允许使用数据,确保一些团队拥有正确的权限,以遵守政府法规要求。 此外,这一层还使用仪表板和其他数据可视化工具帮助发现相关数据。 

数据架构描述如何管理从收集到转换、分发和使用的数据。 它为数据及其在数据存储系统中流动的方式设定了蓝图。 它是数据处理操作和人工智能 (AI) 应用程序的基础。

数据架构的设计应该由业务需求驱动,数据架构师和数据工程师使用这些需求来定义相应的数据模型以及支持它的底层数据结构。 这些设计通常有助于满足业务需求,例如报告或数据科学计划。

随着物联网 (IoT) 等新兴技术的出现,新的数据源不断涌现,良好的数据架构可以确保数据易于管理且具有利用价值,从而支持数据生命周期管理。 更具体地说,它可以避免冗余数据存储,通过清理和重复数据删除来提高数据质量,并支持新的应用程序。 现代数据架构还提供了跨域(例如部门或地理区域之间)集成数据的机制,打破了数据孤岛,因而消除了将所有数据存储在同一地方所带来的巨大复杂性。

现代数据架构经常利用云平台来管理和处理数据。 虽然它的成本更高,但它的计算可扩展性使重要数据处理任务能够快速完成。 存储可扩展性还有助于应对不断增长的数据量,并确保所有相关数据都可用,以提高训练 AI 应用程序的质量。

概念、逻辑和物理数据模型

数据架构文档包含三种类型的数据模型:

概念数据模型:它们也被称为领域模型,可围绕系统将包含的内容、如何组织这些内容和涉及哪些业务规则提供一个全局视图。 在收集初始项目需求的过程中,通常会创建概念模型。 通常情况下,它们包含实体类(定义要在数据模型中表示的、对业务至关重要的事物类型)、其特征和约束、彼此之间的关系以及相关的安全性和数据完整性要求。

 逻辑数据模型:它们不是那么抽象,而是提供了有关所考虑领域中的概念和关系的更多细节。 遵循几种正式的数据建模符号系统之一。 这些模型表明了数据属性,例如数据类型及其对应的长度,并显示了实体之间的关系。 逻辑数据模型不会指定任何技术系统要求。

物理数据模型:它们不是那么抽象,而是提供了有关所考虑领域中的概念和关系的更多细节。 遵循几种正式的数据建模符号系统之一。 这些模型表明了数据属性,例如数据类型及其对应的长度,并显示了实体之间的关系。 逻辑数据模型不会指定任何技术系统要求。

流行数据架构框架

数据架构可以借鉴流行的企业架构框架,包括 TOGAF、DAMA-DMBOK 2 和 Zachman 企业架构框架。

The Open Group Architecture Framework (TOGAF)

这个企业架构方法由 The Open Group 于 1995 年开发,IBM 是该组织的白金会员。

该架构有四大支柱:

业务架构,它定义企业的组织结构、业务策略和流程。

数据架构,它描述概念、逻辑和物理数据资产,以及这些资产在整个生命周期中的存储和管理方式。

应用程序架构,它代表应用程序系统,以及这些系统与关键业务流程以及相互之间的关系。

技术架构,它描述支持任务关键型应用程序所需的技术基础架构(硬件、软件和网络)。

因此,TOGAF 为设计和实现企业的 IT 架构(包括其数据架构)提供了一个完整的框架。

DAMA-DMBOK 2

DAMA International 最初成立时的名称是 Data Management Association International,是一个致力于推进数据和信息管理的非营利组织。 其数据管理知识体系 DAMA-DMBOK 2 涵盖数据架构以及治理和道德、数据建模和设计、存储、安全和集成。

Zachman 企业架构框架

该框架最初由 IBM 的 John Zachman 于 1987 年开发,使用一个从上下文到详细信息的六层矩阵,映射了诸如为什么、怎么做和是什么等六个问题。 它提供了一种正式的数据组织和分析方式,但不包括具体方法。

数据架构的类型和底层组件

数据架构展示了不同数据管理系统如何协同工作的高层视角。 其中包括许多不同的数据存储库,例如数据湖、数据仓库、数据集市和数据库等。 这些存储库结合起来可以创建越来越受欢迎的数据架构,例如数据结构和数据网格。 这些架构更注重将数据作为产品,通过 API 提高元数据的标准化水平以及跨组织的数据民主化程度。

以下部分将深入探讨这些存储组件和数据架构类型:

数据管理系统的类型

数据仓库:数据仓库将来自企业内不同关系数据源的数据聚合到单个集中的统一存储库中。 提取后,数据流经 ETL 数据管道,经过各种数据转换,才能满足预定义数据模型的需求。 一旦加载到数据仓库中,数据就可以支持不同的商业智能 (BI) 和数据科学应用程序。

数据集市:数据集市是一个有针对性的数据仓库版本,它包含一个较小的数据子集,这些数据对组织内的单个团队或选定用户组很重要且是必需的。 由于数据集市包含较小的数据子集,因此在使用更广泛的数据仓库数据集时,数据集市使部门或业务线能够更快地发现更有针对性的洞察。 最初创建数据集市的目的是应对组织在 20 世纪 90 年代建立数据仓库的困难。 当时集成来自整个组织的数据需要进行大量手动编码,而且非常耗时。 与集中式数据仓库相比,数据集市的范围更有限,使其实现起来更容易且更快速。

数据湖:数据仓库存储已处理的数据,而数据湖存储原始数据,通常为 PB 级别。 数据湖可以存储结构化和非结构化数据,这使其与其他数据存储库不同。 这种灵活的存储需求对于数据科学家、数据工程师和开发人员尤其有用,让他们能够访问数据进行数据发现练习和机器学习项目。 最初创建数据湖的目的是应对数据仓库无法处理数量、速度和种类不断增加的大数据的情况。 虽然数据湖比数据仓库慢,但它们的价格也更低廉,因为在采集之前几乎不需要数据准备。 如今,它们作为云数据迁移工作的一部分持续演变。 数据湖支持广泛的用例,因为在收集数据时不需要定义数据的业务目标。 不过,两个主要用例包括数据科学探索以及数据备份和恢复工作。 数据科学家可以使用数据湖进行概念验证。 机器学习应用程序可以从能够在同一个地方存储结构化和非结构化数据中受益,这是使用关系数据库系统无法实现的。 数据湖也可以用于测试和开发大数据分析项目。 当应用程序开发完成并识别出有用数据后,可以将数据导出到数据仓库以供操作使用,并且可以利用自动化来实现应用程序扩展。 数据湖还可以用于数据备份和恢复,因为它们能够以低成本进行扩展。 出于同样的原因,数据湖非常适合存储尚未定义业务需求的“以备不时之需”数据。 现在存储这些数据意味着可以在以后出现新计划时使用。

数据架构的类型

数据结构:数据结构是一种架构,它侧重于数据提供者和数据使用者之间的数据价值链中的数据集成、数据工程和治理的自动化 数据结构基于“活动元数据”的概念,使用知识图、语义、数据挖掘和机器学习 (AI) 技术来发现各种类型元数据(例如系统日志、社交等)中的模式。 然后,将这种洞察应用于自动化并编排数据价值链。 例如,它可以使数据使用者能够找到数据产品,然后自动向他们提供该数据产品。 数据产品和数据使用者之间数据访问的增加减少了数据孤岛,并提供了更完整的组织数据视图。 数据结构是一种具有巨大潜力的新兴技术,可用于增强客户概要分析、欺诈检测和预防性维护。  根据 Gartner 的数据,数据结构使集成设计时间减少 30%,部署时间减少 30%,维护时间减少 70%。

数据网格:数据网格是一种去中心化的数据架构,按业务领域来组织数据。 使用数据网格时,组织需要不再将数据视为流程的副产品,而是开始将其视为产品本身。 数据生产者充当数据产品所有者。 作为主题专家,数据生产者可以利用他们对数据主要使用者的理解为他们设计 API。 这些 API 也可以从组织的其他部分访问,提供了更广泛的受管数据访问渠道。

数据湖、数据仓库等相对传统的存储系统可以作为多个去中心化的数据存储库来实现数据网格。 数据网格还可以与数据结构一起使用,借助数据结构的自动化,可以更快地创建新的数据产品或执行全球治理。

数据架构的优势

结构完善的数据架构可以为企业提供许多关键优势,其中包括:

减少冗余:不同来源中可能存在重叠的数据字段,从而会导致不一致、数据不准确和错失数据集成机会的风险。 良好的数据架构可以使数据存储方式标准化,并且可能减少重复,从而改善质量和整体分析。

提高数据质量:精心设计的数据架构可以解决管理不善的数据湖(也称为“数据沼泽”)所带来的一些挑战。 数据沼泽缺乏适当的数据质量和数据治理实践来提供有洞察力的学习。 数据架构可以帮助实施数据治理和数据安全标准,从而对数据管道进行适当的监督,使其按预期运行。 通过改进数据质量和治理,数据架构可以确保数据以一种现在和将来都具有价值的方式存储。

支持集成:由于数据存储的技术限制和企业内部的组织障碍,数据经常孤立存在。 当今的数据架构应该旨在促进跨域数据集成,以便不同的地理区域和业务部门可以访问彼此的数据。 这有助于对常用指标(例如费用、收入以及相关驱动因素)形成更准确、更一致的理解。 它还支持更全面地了解客户、产品和地理位置,从而更好地为决策提供信息。

数据生命周期管理:现代数据架构可以解决如何随时间推移管理数据的问题。 随着存在时间的增加和访问频率的降低,数据的使用价值通常会减少。 随着时间的推移,可以将数据迁移到成本更低、速度更慢的存储类型,这样就可以继续用于报告和审计,但无需使用高性能存储。

现代数据架构

随着组织制定面向未来应用程序(包括 AI、区块链和物联网 (IoT) 工作负载)的路线图,他们需要能够支持这种数据需求的现代数据架构。

现代数据架构的七大特征:

  1. 云原生和支持云,让数据架构能够从云技术的弹性扩展和高可用性中受益。

  2. 强大、可扩展且可移植的数据管道,将智能工作流、认知分析和实时集成结合在一个框架中。

  3. 无缝数据集成,使用标准 API 接口连接到原有应用程序。

  4. 实时数据支持,包括验证、分类、管理和治理。

  5. 解耦且可扩展,因此服务之间没有依赖关系,而且开放标准支持互操作性。

  6. 基于公共数据域、事件和微服务。

  7. 经过优化,在成本和简单性之间取得平衡。

数据架构的优势

随着数据架构提供商逐渐获得更高的市场采用率,Gartner(链接位于 ibm.com 外部)具体注意到数据架构对效率的积极作用,称它可以将"集成设计时间减少 30%,部署时间减少 30%,维护时间减少 70%。" 数据架构可以明显提高整体生产率,以下优势也可向采用者证明其商业价值:

  • 智能集成:数据架构利用语义知识图谱、元数据管理和机器学习,统一不同数据类型和终端的数据。 这可以帮助数据管理团队汇集相关数据集,以及将全新的数据源集成到企业的数据生态系统中。 此功能可完全实现数据工作负载管理自动化,从而提升效率,还有助于消除数据系统中的数据孤岛,集中数据治理实践,以及提高整体数据质量。

  • 数据民主化:数据架构可促进自助式应用,将数据访问范围扩大至更多的技术资源,例如数据工程师、开发人员和数据分析团队。 数据瓶颈的减少会提高生产率,使业务用户快速做出业务决策,并让技术用户优先执行可以更好地利用其技能集的任务。

  • 更好的数据保护:扩大数据访问的范围并不意味着在数据安全和隐私措施上妥协。 实际上意味着围绕访问控制设置更多的数据治理护栏,以确保特定数据仅供特定角色使用。 数据架构还允许技术和安全团队围绕敏感和专有数据实施数据屏蔽与加密,进而减少数据共享和系统泄露数据的风险。 

数据架构的用例

数据架构在采用方面仍处于起步阶段,但其数据集成功能有助于企业发现数据,进而处理各种用例。 数据架构处理的用例可能与其他数据产品没有很大区别,其差异化优势表现在消除数据孤岛时可达到的范围和规模。 通过跨各种数据源的集成,企业及其数据科学家可以创建整体客户视图,对银行客户尤其有帮助。 数据架构的具体用途:

  • 客户资料、

  • 欺诈识别、

  • 预防性维护分析和

  • 复工风险模型等。

数据架构的难点:数据分布

压力、没时间进行充分测试、含糊不清的规格说明......无论多努力工作,还是会有错误,不过,造成无法挽回失败的,是数据库设计错误还是架构选择错误。 -- Stéphane Faroult,《SQL语言艺术》

针对不同的领域,由于信息资源类型及其存在的状态不同,信息资源整合的需求存在较大差异。 -- 彭洁,《信息资源整合技术》

确定数据分布方案是数据架构设计的难点。越是大系统,数据分布越关键。因此,一线架构师迫切须要建立数据分布策略的大局观。

我们接下来结合案例,讲讲如何运行数据分布的6种具体策略。

数据分布的6种策略

所谓分布式系统,不单单是程序的分布,还涉及数据的分布。而且,处理数据分布内容常常更加棘手。

根据系统数据产生、使用、管理等方面的不同特点,常采用不同的数据分布式存储与处理手段。总体而言,可以归纳为以下6种策略:

  • 独立Schema(Separate-schema)

  • 集中(Centralized)

  • 分区(Partitioned)

  • 复制(Replicated)

  • 子集(Subset)

  • 重组(Reorganized)

1. 独立Schema(Separate-schema)

当一个大系统由相关的多个小系统组成,且不同小系统具有互不相同的数据库Schema定义,这种情况称为“独立Schema”。

独立Schema方式的理解要点:“Application不同,Schema不同”。

如果可以,架构师应首选此种数据分布策略,以减少系统之间无谓的相互影响,避免人为的将问题复杂化。

2.集中(Centralized)

指一个大系统必须支持来自不同地点的访问,或者该系统由相关的多个小系统组成,而持久集中化数据进行集中化的、统一格式的存储。

该方式的特点可用 “集中存储、分布访问” 来概括。

3.分区(Partitioned

分区方式包含水平分区和垂直分区两种类型。

当系统要为“地域分布广泛的用户”提供“相同的服务”时,常常采用水平分区策略。水平分区的特点可用概括为 “两个相同,两个不同” -- 相同的应用程序、不同的应用部署示例(instance),项目的数据模型、不同的数据值。

在实践中,水平分区的应用非常广泛,而垂直分区的作用相比之下要小很多。下图说明了垂直分区方式的特点: 不同数据解读的Schema会有“部分字段(Field)”的差异,但可以从同一套总的数据Schema中抽取得到。

另外,需要特别说明的是,“分区”不是指DBMS支持的“分区”内部机制--后者作为一种透明的内部机制,编程开发人员感觉不到它的存在,常由DBA引入;而当前所讲的“分区”会影响到编程开发人员,或者应用部分工程师,一般由架构师引入。

4.复制(Replicated

在整个分布式系统中,数据保存多个副本,并且以某种机制(实时或快照)保持多个数据副本之间的数据一致性,这就是复制方式的数据分布策略。

5.子集(Subset)

“子集”是“复制”的特殊方式,就是某节点因功能或非功能考虑而保存全体数据的一个相对固定的子集。

总体而言,子集方式和复制方式有着非常类似的优点:

  • 通过数据“本地化”,提升了数据访问性能

  • 数据的专门副本,利于有针对性的进行优化(例如:支持大量写操作的DB副本应减少Index,而已读为主的DB副本可设更多Index

  • 数据的专门副本,便于提高可管理性,加强安全控制

不过,实践中常优先考虑子集方式,因为它与复制方式相比有两大优势:

  • 减少了跨机器进行数据传递的开销

  • 减低了数据冗余,节省了存储成本

6.重组(Reorganized

业务决定功能,功能决定模型。当遇到数据模型不同时,一般能够从功能差异的角度找到答案。

重组这种数据分布策略,就是不同数据节点因要支持的功能不同,而以不同的Schema保存数据--但本质上这些数据是同源的。于是,重组策略需要进行数据传递,但不是数据的“原样”复制,而是以“重新组织”的格式进行传递或保存。

根据典型的应用场景,重组可以分为两种类型:

  • 统计性重组

  • 结构性重组

例如,总工时只需要掌握分公司的财务、生产等概况信息,那么就不需要把下面的数据原样复制到总公司节点,而是通过分公司应用对信息进行统计后上报,这叫“统计性重组” -- 数据的重新组织较多的借助了抽取、统计等操作,并形成了新的数据格式。

“结构性重组”的例子,最典型的就是BI系统。生产系统的数据被整合重组,增加各种利于查询的维度信息,并以新的数据Schema保存提供BI应用使用。

根据系统的特点不同,架构师所规划的数据分布策略无非为两种方式:

  • 非复制方式

  • 复制方式

非复制包括3种具体策略:

  • 集中

  • 分区

  • 独立Schema

复制方式也包括3种具体策略:

  • 复制

  • 子集

  • 重组

另一个对比视角是:数据节点的Schema是否相同。其中,独立模式和重组两种方式,像它们的名字暗示的那样采用了不同的数据Schema,而集中、分区、复制、子集这4种方式统一使用了相同的数据Schema

质量属性方面的效果对比

选择数据分布策略,应特别关注它们在质量属性方面的效果。

下面来整体看看哪些策略分布在可靠性、可伸缩性、通信开销、可管理性,以及数据一致性等方面表现最佳。

可靠性冠军:复制。冗余不利于修改,但有利于可靠性。总体而言,复制方式的数据分布策略是可靠性的冠军。

其实,复制方式的可靠性和最终的“复制机制”密切相关,例如每天以快照方式来同步数据,不如实时同步的可靠性高。

可伸缩性关键:(水平)分区。Scale Up会随着服务规模的增大变得越来越昂贵,而且它是有上限的。对超大规模的系统而言,Scale Out是必由之路。而(水平)分区的数据分布策略非常方便支持Scale Out

有的文献上说“复制”方式对可伸缩性的支持也非常高,这种观点只对了一半--当数据以只读式消费为主时,通过复制增加服务能力的效果才好,否则为保证数据一致性而进行的“写复制”会消耗不少资源。

通信开销冠军:独立Schema。独立Schema“得这个奖”是实至名归的。这很容易理解,既然独立Schema方式强调“将一组数据与它关心密切的功能放在一起”的高聚合原则 ,那么覆盖不同功能范围的应用之间就是松耦合的--用于传递数据的通信开销自然就小了。

可管理性冠军:独立Schema。是的,还是它!由专门的数据Schema分别致辞不同的应用功能,它们是相对独立的,便于进行备份、调整、优化等管理活动。

因此,前面提到过:“如果可以,架构师应首选此种数据分布策略,以减少系统之间无谓的相互影响,避免人为的将问题复杂化。”

可管理性冠军(并列):集中。为什么会存在“并列冠军”呢?因为从觉得角度评价可管理性是没有实际意义的。对采用了“数据大集中”的超大型系统而言,数据中心的管理工作依然具备挑战性,但相对于分散的存储方式而言可管理性已大有改观。可管理性应该视原始问题的复杂程度而论,是相对的,而不是绝对的。

数据一致性冠军:集中。所有用户面对同样的数据,免去了修改同一数据不同实例的“麻烦”,便于保证数据的一致性。

数据分布策略的3条应用原则

数据分布的3条应用原则:

  • 把握系统特点,确定分布策略(合适原则)

  • 不同分布策略,可以综合运用(综合原则)

  • 从“对吗”、“好吗”两方面进行评估优化(优化原则)

参考资料

https://www.ibm.com/cn-zh/topics/data-architecture

https://www.ibm.com/cn-zh/topics/data-fabric

https://cloud.tencent.com/developer/article/2062351


【更多阅读】

……

以上是关于(数据架构)的主要内容,如果未能解决你的问题,请参考以下文章

java实现组织架构导入,这个组织架构是啥?

进阶大数据架构师学习路线

JAVA的三层架构是啥样的?

分享JAVA从初级程序员到架构师视频,文档,架构设计,大型网站架构分析,大数据分析资料

软件架构演变+zookeeper--->安装配置+数据模型+常用命令+与java交互

软件架构演变+zookeeper--->安装配置+数据模型+常用命令+与java交互