问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

一篇文章说清楚数据仓库架构!

创作时间:
作者:
@小白创作中心

一篇文章说清楚数据仓库架构!

引用
CSDN
1.
https://blog.csdn.net/xx_nm98/article/details/143259206

数据仓库架构作为数据管理和分析的核心基础设施,扮演着关键角色。随着技术的不断进步和优化,数据仓库架构也在不断演进和发展。本文就来谈谈目前常用的数据仓库架构,大致有4类:数据仓库集市架构、集中式架构、Lambda架构和Kappa架构。

数据仓库集市架构

在企业信息化建设的过程中,为了高效支持多样化的业务主题,我们常常会面临选择独立的数据集市架构还是集中式架构的决策。

独立的数据集市架构,顾名思义,是根据企业内部的特定业务系统来构建的小型数据仓库。这种架构的优势在于它能够快速响应单一业务系统的数据需求。

数据集市的规模较小,建设周期短易于维护,且通常具有快速查询的特点,它可以提高查询效率,降低成本,并提供更细粒度的数据访问控制。

不过,随着企业规模的扩大和业务系统的增多,如OA、PPI、ML、PLM、WS等系统的引入,业务之间的数据交互变得日益复杂,数据孤岛现象逐渐显现,此时,独立的数据集市架构便显得力不从心。

集中式架构

为了打破数据孤岛,实现数据的高效共享和统一管理,集中式架构应运而生。集中式架构通过将企业内所有业务系统的数据集中到一个统一的数据仓库中,不仅简化了数据出口,实现了数据的“输出一口”,还统一了不同业务系统的数据口径和标准,为数据治理和管理提供了极大的便利。

特点:

  • 数据集中管理:所有数据都存储在一个中心位置,便于统一管理和维护。
  • 高性能:由于数据存储在一个集中的系统中,可以更好地利用硬件资源进行数据处理和分析。

优势:

  • 简化数据管理:集中式架构使得数据管理更加简单和高效。这减少了数据管理的复杂性,降低了管理成本。
  • 支持企业级决策分析:集中式数据仓库可以为企业提供全面、一致的数据视图,支持企业级的决策分析。企业管理层可以通过访问集中式数据仓库,获取企业各个部门的业务数据,进行综合分析和决策。
  • 易于扩展:虽然集中式架构在一开始可能是为了满足特定规模的数据存储和处理需求而设计的,但它通常也具有一定的可扩展性。企业可以通过增加硬件资源(如服务器、存储设备等)来扩展数据仓库的存储容量和处理能力。

Lambda架构

为了进一步满足企业对实时数据的需求,Lambda架构被提出。Lambda架构通过结合离线计算实时计算两种方式,Lambda架构能够实现对实时数据的快速响应的同时,保证数据的准确性和全面性。

三层结构及功能:

1.批处理层(Batch Layer)

  • 数据存储与管理:负责存储和管理主数据集。主数据集具有原始、不可变且永远真实的属性,是后续数据处理的基础。
  • 预先批处理计算:预先对数据进行批处理计算,生成批处理视图(Batch Views)。批处理的时间间隔可根据不同业务需求设置,通过处理所有的历史数据来保证数据的准确性,能够修复错误并更新现有的数据视图。批处理层擅长处理大规模的离线数据,适用于对数据准确性要求高、对实时性要求不那么高的场景,例如历史数据的统计分析、长期趋势的预测等。

2.速度处理层(Speed Layer)

  • 实时数据处理:实时处理新来的大数据,对增量数据进行快速计算。速度层能够在数据到达后立即进行处理,生成实时视图(Real-time Views),最小化数据处理的延迟。它所生成的数据视图可能不如批处理层最终生成的视图那样准确或完整,但具有很高的实时性。
  • 数据更新与补充:速度层不断接收新数据并更新实时视图,弥补了批处理层在数据处理过程中产生的延迟。例如,在批处理层的任务尚未完成的时间段内,速度层可以提供最新的数据视图,让用户能够及时获取到最新的数据信息。

3.服务层(Serving Layer):

  • 结果合并与查询响应:用于合并批处理层和速度层的结果,对外提供统一的数据查询接口,响应用户的查询请求。当用户发起查询时,服务层会根据查询的需求,从批处理层获取准确的历史数据视图,从速度层获取实时的数据视图,并将两者进行合并,返回给用户一个完整的查询结果。

主要优势:

  1. 容错性好:如果系统出现错误,可以通过修复算法或从头开始重新计算视图。并且速度层中处理的数据不断写入批处理层,当批处理层重新计算时可以修正速度层引入的错误,具有较高的容错能力。
  2. 查询灵活度高:批处理层允许针对任何数据进行临时查询,能够满足用户多样化的查询需求。
  3. 易伸缩:所有的批处理层、速度处理层和服务层都是完全分布式的系统,可以通过增加新机器来轻松地扩大规模,具有良好的可扩展性。
  4. 易扩展:添加新的视图相对容易,只需给主数据集添加几个新的函数即可,方便系统功能的扩展和升级。

缺点:

Lambda 架构也存在一些缺点,比如开发和维护的复杂性较高,需要维护两套不同的代码(批处理和实时处理),且存在数据口径不一致的风险等。

Kappa架构

通过改进流计算系统来解决数据全量处理的问题,使得实时计算和批处理过程使用同一套代码,将所有数据处理任务都视为流处理任务,简化了数据处理流程。

架构组成:

1.消息传输层(Speed Layer)

·这是 Kappa 架构的基础,提供接收和存储流数据的消息队列。
·具有持久性(可任意设定数据存储时间)、分布式、数据可重放(数据可以重新处理)、高性能等特点,数据可以在某个需要的限度内全量存储,并在必要时从头开始读取重新计算,从而获得可靠结果。

2.处理层(Serving Layer)

·提供流计算引擎,用于进行流分布式实时计算。
·具有低延迟、高吞吐、具备容错与恢复能力以及一致性保证等特点,可保证系统稳定、快速地处理大量数据,并适用于对数据一致性要求较高的应用场景。

3.应用层(Application Layer)

·接收处理完成的结果数据,为上层业务应用提供数据支持。

主要优势:

  1. 代码维护简单:只需要维护实时处理模块,避免了 Lambda 架构中同时维护批处理和实时处理两套代码的复杂性,降低了开发和维护成本。
  2. 数据口径统一:由于使用同一套代码进行数据处理,不存在离线和实时数据合并的问题,保证了数据口径的一致性。
  3. 灵活性高:方便应对业务逻辑的频繁变更,当业务逻辑改变时,只需重新启动流计算作业对历史数据进行重新处理,即可快速适应新的业务需求。

主要缺点:

  1. 历史数据处理压力大:所有的数据都通过流式计算,在处理大规模历史数据时,即便通过加大并发实例数,也可能难以满足数据查询响应的即时性要求,吞吐量相对较低。
  2. 开发周期长:由于采集的数据格式可能不统一,每次都需要开发不同的流处理程序,导致开发周期较长。
  3. 依赖实时计算系统能力:在实时数据处理时,遇到大量不同的实时流进行关联时,非常依赖实时计算系统的能力,很可能因为数据流先后顺序问题,导致数据丢失。
  4. 服务器成本问题:核心原理依赖于外部高性能存储(如 Redis、HBase 等),但这些系统组件并非设计来满足全量数据存储需求,可能会造成服务器成本的浪费。

企业该如何选择数据仓库架构

企业应该如何选择数据仓库架构?

事实上,企业应根据自身的发展阶段和实际需求来制定数据建设策略,在选择架构时应考虑以下因素:

  • 数据的规模和增长率
  • 实时处理的需求程度
  • 系统的可维护性和扩展性
  • 技术团队的专业能力和资源
  • 成本效益分析

在信息化建设初期,企业可以通过直读数据库的方式快速应用数据资源。随着业务的发展和数据量的增长,企业可以逐步引入中间库等过渡性解决方案来提升数据应用效率。当业务需求进一步增多且数据整合难度加大时,企业可以考虑建设完整的数据仓库来满足更高层次的数据应用需求。

对于大多数企业来说,传统的集中式数仓架构或离线大数据架构仍然是更为实际和可行的选择。这种架构通常由四层组成:异构数据源层、数据采集和计算层、数据中心层、数据应用层。异构数据源层负责汇集企业内各种类型的数据源;数据采集和计算层则提供离线和实时同步机制,将原始数据转化为可应用的数据;数据中心层作为数据存储的核心,提供数据连接服务;而数据应用层则支持各种数据应用,如BI、数据分析等,帮助企业进行业务决策和探索分析。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号