前言
本文隶属于专栏《大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见大数据理论体系
姊妹篇
《分布式数据模型详解:OldSQL => NoSQL => NewSQL》
《分布式计算模型详解:MapReduce、数据流、P2P、RPC、Agent》
《大数据存储架构详解:数据仓库、数据集市、数据湖、数据网格、湖仓一体》
《大数据处理架构详解:Lambda架构、Kappa架构、流批一体、Dataflow模型、实时数仓》
背景
伴随着社会的发展,用户对数据仓库的要求越来越高。
关于数据仓库请参考我的博客——数据仓库是什么?
越来越多的用户希望数据仓库能够做到:
- 分析实时数据和最新数据和历史数据
- 跨数据域的相关性,即使它们传统上不存储在一起(例如,实时客户事件数据与CRM数据一起;网络传感器数据与营销活动管理数据)
- “大数据”的极端规模,却具有“小数据”的感觉和语义
- 以上所有功能都在一个集成且安全的平台上
推动这一趋势的因素部分是技术,部分是业务,部分是文化。
- 在技术方面,检测所有内容并通过消息传递系统实时发送数据比以往任何时候都更便宜、更容易。
- 在商业方面,公司和政府正在尽可能多地数字化和自动化他们的运营,以便决策和资产管理可以更有效。
- 在文化方面,人们希望能够立即获得所需的答案,而不必去问别人。
实时数仓的定义
描述实时数仓(Real-time Data WareHouse,简称 RTDW
) 的最简单方法是它的外观和感觉都像一个普通的数据仓库,但即便保持着庞大的规模,速度依然很快。它是一种数据仓库现代化,可让您拥有“大数据”规模的“小数据”语义和性能。
- 数据更快地到达仓库;想想每秒数百万个事件不断到达的流
- 数据以最佳方式查询所需的时间更快,到达后立即查询,无需处理、聚合或压缩
- 查询运行的速度更快,小型选择性查询以 10 秒或 100 毫秒为单位测量;扫描或计算密集型大型查询以非常高的带宽进行处理
- 在需要时,数据的突变速度很快:如果出于任何原因需要更正或更新数据,则可以就地完成,而无需大量重写
虽然这听起来很简单,甚至对某些人来说可能是微不足道的,但十几年来大数据的发展已经表明并非如此。对于到达速度非常快的大量数据(其中一些可能需要更新)以及大量不同模式的查询,很难保持交互式性能。
下表提供了有关构成 RTDW 的用例特征的更多详细信息。
特征 | 详细描述 |
---|---|
摄取 | 中到高吞吐量,通常流式传输;仅针对插入以及插入+更新模式进行了优化 |
查询 | 针对点查找、分析、突变等进行了优化,低延迟、高并发;流入的数据可以立即以最佳方式进行查询;流式传输的数据可与历史数据一起查询,无需 Lambda 架构 |
数据模型 | 传统企业数据类型;中小型型号;主要以维数和反三范式为主,偶尔三范式模型 |
如果用比较规范的语言来描述实时数仓,可以这样来描述:
实时数仓是一种将实时流数据和批量数据进行整合的数据仓库,它可以为企业提供实时的业务洞察和决策支持,是现代数据处理和分析的重要组成部分。
实时数仓是一种存储系统,用于存储和分析实时数据。数据在可用时自动捕获,然后立即分析并与已存储的历史数据相关联。最终,用户能够更快地获取数据,更快地查看和分析它。
实时数仓的优势和挑战
实时数仓具有许多优势,包括:
- 更快的决策:实时数仓使组织能够整合来自不同来源的数据,从中提取见解,并利用它们更快地做出战略性业务决策。组织可以实时刷新数据仓库中所有业务系统的数据,并将报表设置为根据需要运行。这节省了生成报告和分析所需的时间,从而实现更敏捷的决策。
- 提高数据民主化:实时数仓促进了数据民主化,使组织中的每个人都能够访问他们需要执行职责并优化其计划所需的当前和历史数据。
- 个性化的客户体验:实时数仓为高级分析和机器学习奠定了基础,这对于跨组织使用的所有渠道提供个性化的客户体验至关重要。
- 提高业务敏捷性:实时数仓提高了企业响应变化的速度。它减少了业务流程中的时间滞后,帮助组织更加敏捷并更快地利用机会。实时数仓可帮助公司立即发现机会并调整业务不同方面的战略,从而提高效率并使他们能够实现收入和利润目标。
- 解锁新的业务用例:实时访问数据可以为各行各业的企业解锁大量用例。它有可能改变企业的运营方式以及他们可以为客户提供的价值。
实时数仓也带来了挑战:
- 其中最大的一个是ETL(提取,转换,加载)的性能,该过程将数据从源系统复制到仓库。ETL 工具通常以批处理模式运行,这非常耗时,并且需要仓库停机,使数据不可用。
- 此外,实时数仓面对一些复杂的实时计算场景也表现乏力,比如多流关联等。
关于 ETL 请参考我的博客——什么是 ETL ?什么是 ELT ?
实时数仓的架构
实时数仓通常具有四个组件:数据收集层
、数据存储层
、实时计算层
和实时应用层
。这些组件协同工作,以便在事件发生后立即或短时间内支持事件数据的处理和分析。所有数据处理阶段(数据摄取、丰富、分析、基于 AI/ML 的分析)都是连续的,具有最小延迟,并且能够实现实时报告和即席分析。
一个比较典型的实时数仓架构如下所示:
- 数据收集层:第三方服务和协同系统通过 Apache Kafka/Apache Nifi 之类的消息总线传输数据到实时数仓;第三方数据源通过调用实时数仓的 API;物联网系统通过直接连接并推送数据的方法传输数据
- 数据存储层:使用 Apache Kudu/Apache Druid/Amazon Redshift 来进行实时数据存储
- 实时计算层:使用 Apache Spark/Amazon Kinesis/Hadoop 来进行实时计算和分析
- 实时应用层:使用 AI 和机器学习技术对数据进行分析和挖掘,使用 SQL Server/Oracle BI 来支持查询、报告和即席查询;使用 Apache Impala 来支持实时报告和告警。
关于 Hadoop 请参考我的博客——Hadoop是什么?
关于 Apache Kafka 请参考我的博客——Kafka 是什么?
关于 Apache Druid 请参考我的博客——一篇文章了解 Apache Druid
关于 Apache Spark 请参考我的博客——为什么Spark这么牛逼?
实时数仓的应用案例
实时数仓在各行各业都有广泛的应用。以下是一些实时数仓的应用案例:
- 实时 OLAP 分析:实时数仓可以支持实时 OLAP 分析,帮助企业快速获取业务洞察,做出更快的决策²。
- 实时数据看板:实时数仓可以支持实时数据看板,帮助企业实时监控业务运行情况,及时发现问题并采取措施²。
- 实时业务监控:实时数仓可以支持实时业务监控,帮助企业及时发现业务异常并采取相应措施²。
- 实时数据接口服务:实时数仓可以支持实时数据接口服务,帮助企业快速获取所需数据,提高业务效率²。
实时数仓的技术实现
实时数仓的技术实现通常包括以下几个方面:
- 消息总线:负责从各种数据源收集实时数据,并将其传输到数据存储层。
- 实时存储:负责存储实时数据,支持快速查询和分析。
- 流处理和分析:负责对实时数据进行计算和分析,支持快速查询和分析。
- 应用层:负责将实时计算结果展示给用户,支持快速查询和分析。
目前,有许多技术可以用于实现实时数仓。例如,Apache Flink 是一个流行的流处理引擎,可以用于实现实时计算层。TiDB 是一个开源的分布式 HTAP 数据库,可以用于实现数据存储层。此外,还有许多其他技术可以用于实现实时数仓,参考下图,具体取决于您的需求和偏好。
思考
1. 数仓和实时数仓有什么区别?
数据仓库(Data Warehouse)和实时数仓(Real-time Data Warehouse)是两种不同的数据管理和分析架构,它们有以下区别:
- 数据更新方式:数据仓库通常采用批处理方式,数据更新周期较长,一般为每日或每周更新,而实时数仓则支持实时数据流处理,数据更新周期较短,一般为每小时或每分钟更新。
- 数据处理方式:数据仓库通常采用在线分析处理(OLAP)方式,支持复杂的数据查询和分析,而实时数仓则更多地采用在线事务处理(OLTP)方式,用于支持实时的数据查询和分析。
- 数据结构:数据仓库通常采用多维数据结构(如星型模型、雪花模型等),而实时数仓则更多地采用关系型数据结构。
- 数据存储方式:数据仓库通常采用离线存储方式,数据存储在大型的数据仓库中,而实时数仓则更多地采用内存存储方式,数据存储在内存中,以提高数据查询和分析的速度。
- 数据查询方式:数据仓库通常采用多维查询语言(MDX)进行数据访问,而实时数仓则更多地采用结构化查询语言(SQL)进行数据访问。
总之,数据仓库和实时数仓是两种不同的数据管理和分析架构,它们在数据更新方式、数据处理方式、数据结构、数据存储方式和数据查询方式等方面存在一些区别。我们需要根据具体的业务需求和场景来选择适合的数据管理和分析架构。
2. 实时数仓需要批处理层吗?
实时数仓不一定必须有批处理层,但是在某些情况下,批处理层可以为实时数仓带来一些优势。
在实时数仓中,实时处理层通常用于处理实时数据流,而批处理层用于处理历史数据。批处理层可以对历史数据进行离线处理,以产生更准确的数据结果。例如,如果需要对历史数据进行聚合操作,则可以使用批处理层对历史数据进行离线聚合,并将结果存储在批量数据存储系统中。这样,实时数仓就可以同时支持实时数据和历史数据的查询和分析。
此外,批处理层还可以用于数据重放和故障恢复。如果实时数据处理层出现故障,可以使用批处理层重新处理历史数据,并将结果重新注入到实时数据处理层中,以保证数据的完整性和正确性。
总之,在某些情况下,批处理层可以为实时数仓带来一些优势,但它并不是必需的。实时数仓的设计应该根据具体的业务需求和场景来确定是否需要批处理层。
总结
本文讨论了实时数仓(RTDW)的背景、定义、优势和挑战、架构、应用案例以及技术实现。
实时数仓是一种现代化的数据仓库,具有大数据规模的小数据语义和性能。它可以处理实时数据、最新数据和历史数据,并且能够跨数据域进行相关性分析。实时数仓具有更快的数据到达和查询速度,可以在集成且安全的平台上完成所有功能。
实时数仓的优势包括更快的决策、数据民主化、个性化的客户体验、提高业务敏捷性和解锁新的业务用例。然而,实时数仓也面临着ETL性能和复杂实时计算场景等挑战。
典型的实时数仓架构包括数据收集层、数据存储层、实时计算层和实时应用层。数据收集层负责接收和传输数据,数据存储层用于实时数据存储,实时计算层用于实时计算和分析,实时应用层用于数据分析和挖掘。
实时数仓可以应用于实时OLAP分析、实时数据看板、实时业务监控和实时数据接口服务等场景。其技术实现通常包括消息总线、实时存储、流处理和分析以及应用层。
常用的实时数仓技术包括Apache Kafka、Apache Druid、Apache Spark、Hadoop、TiDB等,具体选择取决于需求和偏好。
参考
(1) What Is Real-Time Data? An Introduction | Splunk. https://www.splunk.com/en_us/data-insider/what-is-real-time-data.html.
(2) Building a Real-Time Data Warehouse - DZone. https://dzone.com/articles/building-a-real-time-data-warehouse-with-tidb-and.
(3) What is a Data Warehouse? | IBM. https://www.ibm.com/topics/data-warehouse.
(4) Data Warehouse: Definition, Uses, and Examples | Coursera. https://www.coursera.org/articles/data-warehouse.
(5) Active and Real-Time Data Warehousing | SpringerLink. https://link.springer.com/referenceworkentry/10.1007/978-0-387-39940-9_8.
(6) An Overview of Real Time Data Warehousing on Cloudera. https://blog.cloudera.com/an-overview-of-real-time-data-warehousing-on-cloudera/.
(7) Real-Time Data Warehouse: Architecture, Tech Stack, Examples - ScienceSoft. https://www.scnsoft.com/analytics/data-warehouse/real-time.
(8) Apache Flink + TiDB: A Scale-Out Real-Time Data Warehouse for … - PingCAP. https://www.pingcap.com/blog/apache-flink-tidb-a-scale-out-real-time-data-warehouse-for-analytics-within-seconds/.
(9) From Traditional Data Warehouse To Real Time Data Warehouse - ResearchGate. https://www.researchgate.net/publication/314248372_From_Traditional_Data_Warehouse_To_Real_Time_Data_Warehouse.
(10) How To Use Real-Time Data? Key Examples And Use Cases - Forbes. https://www.forbes.com/sites/bernardmarr/2022/03/14/how-to-use-real-time-data-key-examples-and-use-cases/.
(11) Database vs. Data Warehouse: Differences, Use Cases, Examples. https://www.couchbase.com/blog/database-vs-data-warehouse/.
(12) Best Practices for Real-time Data Warehousing - Oracle. https://www.oracle.com/technetwork/middleware/data-integrator/overview/best-practices-for-realtime-data-wa-132882.pdf.
(13) Data Warehousing Modeling Techniques and Their Implementation on the … https://www.databricks.com/blog/2022/06/24/data-warehousing-modeling-techniques-and-their-implementation-on-the-databricks-lakehouse-platform.html.
(14) Five benefits of real-time data warehousing | Blog | Fivetran. https://www.fivetran.com/blog/5-benefits-of-real-time-data-warehousing.