实时数据处理革命:从传统数据栈到新一代流处理解决方案

本文主要是介绍实时数据处理革命:从传统数据栈到新一代流处理解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

“数据像鱼一样,越放越臭,不像酒,越陈越香。”

图片

上述观点可能显得有些尖锐,但也有其道理所在。随着企业努力利用数据来实现新的商业模式,现有的数据栈明显无法继续满足需求,因为传统数据栈设计之初并未考虑到如今企业对于“超低延迟”的要求。

在深入探讨新应用不断涌现的需求之前,让我们回顾大约十年前的数据和分析领域的主要趋势,毫无疑问是“大数据”运动。思想领袖们用三个 V 来定义“大数据”:体量(Volume)、速度(Velocity)和多样性(Variety)。

简而言之,“大数据”指的是来自新来源的大量且复杂的数据集。这些数据集对于传统软件来说过于庞大,但可以用来解决以前无法解决的业务问题。

企业有巨大的潜力从海量数据中提取有意义的信息。然而,由于缺乏处理如此庞大数据集的工具,这一潜力尚未被充分发挥。大家引入 Hadoop 这类技术期望能够释放这一潜力,但这些大数据技术主要关注解决体量方面的问题,大多数用户没有看到其必要性或价值,所以没有被广泛使用。

为什么会这样呢?

原因有很多,但主要原因是数据的有限保质期。数据从业者面临实时访问数据的挑战,准确地说是在数据的内在价值还很高时实时访问数据的挑战。简单地将原始数据存储在数据湖中类似于数据倾倒,而不是利用数据。

另一个重要原因是即便数据可访问,其原始形式通常也不足以进行有效分析。要从数据中提取有价值的信息,复杂的提取-转换-加载(ETL)过程变得必要。数据依然被隔离在独立系统中,并与特定应用紧密相连。数据源的集成最近才通过消息队列和 CDC 连接器得以改善。

1. 数据特征的演变

传统数据从业者都会关注以下特征:
数据从业者关注的传统数据特征:Accuracy (准确性);Completeness (完整性);Reliability (可靠性)
数据库管理系统用 ACID (Atomicity, Consistency, Isolation, Durability)原则支持这些特征。

  • 原子性(Atomicity):通过全有或全无的语义确保完整性。
  • 一致性(Consistency):通过约束确保数据准确性。
  • 隔离性(Isolation):为数据完整性和准确性提供保证。
  • 持久性(Durability):基于不可变写入确保数据的可靠性。

ACID 原则在满足各种业务需求方面是有效的。当前的数据处理系统确保在任何数据栈中对这些特征的强大支持,所以企业能够处理依赖于静态数据快照的工作量。虽然业内已经通过各种优化来提升处理工作的速度和实时能力,但这些改进仍不能满足需要。

数据圈内,越来越多的人达成共识,认为应将数据视为连续无限的流,而不是快照。企业不再满足于了解过去发生了什么,他们更加关注预测未来结果,这需要对数据进行“实时”分析。在这种情况下,“实时”是由数据延迟定义的,而不是查询延迟。为了更好地理解,我们需要为数据的定义建立一套新的特征。

为了解决这些特征,新的数据处理范式是必要的。这个范式将:

  • 处理离散事件数据。
  • 连续处理实时数据。
  • 集成多个数据流进行状态处理。

2. 早期流处理解决方案

要支持上一节讨论的新的数据处理范式,新的数据处理栈是必要的。这个数据栈应具备以下特征:

  • 事件数据语义以保持事件数据的一致性。
  • 增量计算模型以对实时数据进行连续更新。
  • 熟悉的关系数据模型,将流视为表,以实现各种数据源的无缝集成。

第一代流处理系统:流处理系统已经在满足这些需求方面努力了一段时间。第一代流处理系统,如 Spark Streaming、Apache Heron 和早期版本的 Flink,在某些方面证明了其价值。例如,它们在微批处理方面表现出色,适合特定的使用场景。Spark Streaming 对于希望将流处理纳入现有工作负载的 Spark 用户来说,是一个有价值的补充。总体而言,这些系统继承了成熟的批处理模型的许多优点。

然而,它们也从传统批处理模型中继承了调度和协调问题。它们不支持真正的事件时间语义,这对于在事件驱动架构中构建应用至关重要。此外,这些技术仅关注数据处理方面。缺乏数据存储意味着需要一个单独的数据存储来实现持久化,从而导致应用性能下降和运营开销增加。此外,这些系统主要为早期采用者设计,他们习惯于使用低级 API 和接口。因此,这些技术在快速轻松构建实时应用方面没有显著进展。

3. 新一代流处理解决方案

为了使流处理更加广泛地被采用,必须将 SQL 作为标准 API。此外,新系统应包括内置存储层以有效处理数据检索。

流式数据库的出现:其旨在结合流处理引擎的增量处理能力与传统数据库的基于 SQL 的分析和持久化能力。新一代流式数据库的出现可以改善依赖于独立平台进行流处理和批处理所带来的操作低效问题。流式数据库,如 RisingWave 和 Materialize,旨在使用 SQL 查询和实时物化视图连续处理事件数据流。它们还会持久化历史事件数据以供进一步分析。

与将数据存储在外部数据库中的流计算引擎不同,流式数据库设计之初就考虑到了提供内置处理和持久化能力。这意味着单一的流式数据库就可以作为 Apache Flink + Apache Cassandra 等工具组合的可行替代方案。这样做简化了部署、配置、集成和管理。通过流式数据库,数据库功能向上游转移,实现数据到达时的实时处理,并促进数据的即时服务。

4. 展望未来

通过结合早期流处理引擎和传统数据库系统的优势,我们正在降低流处理的门槛,让更广泛的用户群体受益。这种融合的影响是深远的,企业可以利用实时数据分析做出明智的决策,预测结果,并获得竞争优势。连续的实时数据处理和多数据流的集成支持各种应用场景,包括欺诈检测、实时个性化、供应链优化和物联网分析。此外,流处理的大众化使数据工程师、数据科学家和数据分析师能够在无需大量专业技术知识储备的情况下开发实时应用。

5. 关于 RisingWave

RisingWave 是一款开源的分布式流处理数据库,旨在帮助用户降低实时应用的开发成本。RisingWave 采用存算分离架构,提供 Postgres-style 使用体验,具备比 Flink 高出 10 倍的性能以及更低的成本。

👨‍🔬加入 RW 社区,欢迎关注公众号:RisingWave 中文开源社区

🧑‍💻快速上手 RisingWave,欢迎体验入门教程:github.com/risingwave

💻深入使用 RisingWave,欢迎阅读用户文档:zh-cn.risingwave.com/docs

🔍更多常见问题及答案,欢迎搜索留言: risingwavelabs/discussions

这篇关于实时数据处理革命:从传统数据栈到新一代流处理解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081485

相关文章

LangChain转换链:让数据处理更精准

1. 转换链的概念 在开发AI Agent(智能体)时,我们经常需要对输入数据进行预处理,这样可以更好地利用LLM。LangChain提供了一个强大的工具——转换链(TransformChain),它可以帮我们轻松实现这一任务。 转换链(TransformChain)主要是将 给定的数据 按照某个函数进行转换,再将 转换后的结果 输出给LLM。 所以转换链的核心是:根据业务逻辑编写合适的转换函

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

百度OCR识别结构结构化处理视频

https://edu.csdn.net/course/detail/10506

数据时代的数字企业

1.写在前面 讨论数据治理在数字企业中的影响和必要性,并介绍数据治理的核心内容和实践方法。作者强调了数据质量、数据安全、数据隐私和数据合规等方面是数据治理的核心内容,并介绍了具体的实践措施和案例分析。企业需要重视这些方面以实现数字化转型和业务增长。 数字化转型行业小伙伴可以加入我的星球,初衷成为各位数字化转型参考库,星球内容每周更新 个人工作经验资料全部放在这里,包含数据治理、数据要

如何在Java中处理JSON数据?

如何在Java中处理JSON数据? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在Java中如何处理JSON数据。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,在现代应用程序中被广泛使用。Java通过多种库和API提供了处理JSON的能力,我们将深入了解其用法和最佳

两个基因相关性CPTAC蛋白组数据

目录 蛋白数据下载 ①蛋白数据下载 1,TCGA-选择泛癌数据  2,TCGA-TCPA 3,CPTAC(非TCGA) ②蛋白相关性分析 1,数据整理 2,蛋白相关性分析 PCAS在线分析 蛋白数据下载 CPTAC蛋白组学数据库介绍及数据下载分析 – 王进的个人网站 (jingege.wang) ①蛋白数据下载 可以下载泛癌蛋白数据:UCSC Xena (xena

AI学习指南机器学习篇-朴素贝叶斯处理连续特征和离散特征

AI学习指南机器学习篇-朴素贝叶斯处理连续特征和离散特征 在机器学习领域,朴素贝叶斯是一种常用的分类算法,它的简单性和高效性使得它在实际应用中得到了广泛的应用。然而,在使用朴素贝叶斯算法进行分类时,我们通常会面临一个重要的问题,就是如何处理连续特征和离散特征。因为朴素贝叶斯算法基于特征的条件独立性假设,所以对于不同类型的特征,我们需要采取不同的处理方式。 在本篇博客中,我们将探讨如何有效地处理

神经网络第四篇:推理处理之手写数字识别

到目前为止,我们已经介绍完了神经网络的基本结构,现在用一个图像识别示例对前面的知识作整体的总结。本专题知识点如下: MNIST数据集图像数据转图像神经网络的推理处理批处理  MNIST数据集          mnist数据图像 MNIST数据集由0到9的数字图像构成。像素取值在0到255之间。每个图像数据都相应地标有“7”、“2”、“1”等数字标签。MNIST数据集中,

vue怎么处理跨域

Vue.js 本身并不直接解决跨域问题,因为跨域问题主要是浏览器基于同源策略(Same-origin policy)的一种安全限制。然而,在Vue.js项目中,我们可以采取一些策略来绕过或处理跨域问题。 解决跨域问题的常用方法: 代理服务器:在开发环境中,我们可以配置一个代理服务器来转发API请求,从而绕过浏览器的同源策略。Vue CLI 提供了内置的代理功能,可以在 vue.config.j