为了账号安全,请及时绑定邮箱和手机立即绑定

什么是流数据库?

图片来自免费图片网站 freepik

一个流数据库(streaming database)是一种专门设计用于处理大量实时流数据的数据库。与传统数据库先存储数据再批量处理不同,流数据库在数据生成时立即进行处理,从而实现实时洞察和分析。与不持久化数据的传统流处理系统不同,流数据库可以存储数据并响应用户的数据访问请求。流数据库非常适合低延迟的应用,例如实时分析、欺诈检测、网络监控以及物联网(IoT),并且可以简化技术层。

简史

2002年,学术界首次提出了流数据库的概念。一群来自布朗大学、布兰迪斯大学和麻省理工学院的研究人员指出了管理数据库内部数据流的需求,并建立了第一个流数据库Aurora。随后,这项技术被大型企业采用。顶级的三大数据库供应商,Oracle、IBM和微软,相继推出了各自的流处理解决方案,分别是Oracle CQL、IBM System S和Microsoft SQL Server StreamInsight。这些供应商没有从零开始开发流数据库,而是直接在其现有数据库中集成了流处理功能。

自2000年代末以来,受MapReduce启发的开发人员将流处理功能从数据库系统中分离出来,并开发了大规模流处理引擎,包括Apache Storm、Apache Samza、Apache Flink和Apache Spark Streaming。这些系统旨在持续处理接收的数据流,并将处理结果传递给下游系统。然而,与流数据库相比,流处理引擎不保存数据,因此无法响应用户发起的即席查询需求。

流数据库和流处理引擎是并行发展的。在2010年代,开发了PipelineDB和KsqlDB这两个数据库,当时非常流行。进入21世纪20年代初,出现了几个基于云的流数据库,如RisingWave、Materialize以及DeltaStream。这些产品旨在为用户提供基于云的流数据库服务。为了实现这一目标,重点在于设计一种架构,充分利用云上的资源,实现无限水平扩展和极致的成本效益。

一个常见的使用方法示例

实时应用需要流式数据库。图片由作者提供。

流式数据库非常适合需要实时应用并具有从亚秒级以内到分钟级的时效性需求。像网络监控这类应用需要亚秒级以内延迟,而像广告推荐、股市仪表盘和食品配送服务这样的应用的延迟需求可以从几百毫秒到几分钟。流式数据库能够以低延迟持续提供结果,并非常适合这些应用。

有些应用程序对时效性不敏感,可以容忍从几十分钟到几天不等的延迟。一些典型的应用程序包括酒店预订和库存跟踪。在这种情况下,用户可能会选择使用流式数据库或传统的批处理数据库。他们可以根据成本效率、灵活性和技术栈复杂性等因素来做出决定。

实时流数据库通常与其他数据系统一起用于实时应用场景中,以帮助实现两种典型使用案例:实时数据摄入(ETL)和实时数据分析

流数据库通常与其它现代数据系统集成,以支持两种主要用例:实时数据摄入(ETL)和实时分析。图片由作者制作。

流式处理 (数据抽取、转换、加载)
流式处理 (ETL)

实时数据摄入提供了一种从一个系统到另一个系统的连续数据流。开发人员可以使用流式数据库来清洗流数据,合并多个流,并实时将这些结果传输到下游系统。在实际应用中,流入流式数据库的数据通常来自OLTP数据库、消息队列或存储系统。处理后的数据通常会被重新写回这些系统,或插入到数据仓库或数据湖。

实时流处理

实时数据分析 专注于实时处理复杂计算并提供最新结果。在实时数据分析场景下,数据通常源自OLTP数据库、消息队列和存储系统。结果通常会输入到服务系统中,以支持用户的即时请求。流数据库也可以独立提供查询服务。用户可以直接将流数据库连接到BI工具来展示结果。

随着对实时机器学习需求的增长,流数据库也成为实现敏捷特征工程的重要工具。通过使用流数据库存储转换后的数据作为特征,开发人员可以迅速响应数据模式的变化和新的事件。流数据库允许实时摄入、处理和转换数据,以生成能够提高机器学习模型准确性和效率、减少数据冗余并提升数据质量的有意义特征。这使组织能够更快地做出更明智的决策,优化处理机器学习工作流程,并在竞争中获得优势。

流数据库与传统数据库

实时数据库与传统数据库的区别。这幅图由作者绘制。

传统数据库设计用于存储大量批处理数据,并且能够提供快速、一致的访问。它们通常被优化以处理复杂的操作,比如聚合和连接,这些操作通常涉及大批量的数据。也就是说,传统数据库会被动地存储数据,而由人发起的查询会主动触发计算。比如MySQL和PostgreSQL这样的OLTP数据库,以及DuckDB和ClickHouse这样的OLAP数据库。

另一方面,实时数据库被设计用来逐步处理大量不断流入的数据,并提供低延迟的数据和结果访问,以供进一步处理和分析。它们优化了数据到达时立即处理,而不是在数据被存储后进行批量处理。实时数据库的执行模型通常被称为_数据库管理系统主动、人类被动(DAHP)_模型。实时数据库在数据到达时主动触发计算,而人类则被动地接收数据库的结果。实时数据库的例子包括PipelineDB、KsqlDBRisingWave

实时数据库对比OLTP(在线事务处理)数据库

一个OLTP数据库符合ACID属性,并可以处理并发事务。相比之下,流式数据库不能保证ACID属性,因此不适合用于事务性工作负载。从数据准确性角度来看,流式数据库保证数据一致性和完整性。一个设计优良的流式数据库应具备以下两个特性:

  • 精确一次语义,意味着每个数据事件都会被处理一次,并且仅处理一次,即使在系统故障的情况下也一样。
  • 乱序处理意味着用户可以让流数据库按照预设的顺序处理数据事件,即使数据事件到达顺序混乱也一样。
实时数据库 vs. OLAP 数据库,

一个OLAP数据库被优化来高效回答用户发起的分析查询。OLAP数据库通常实现列式存储和向量化执行引擎,以加速复杂查询处理。OLAP数据库最适合需要交互式查询的场合。与OLAP数据库不同,流数据库更侧重于结果的新鲜感,并采用增量计算模型来优化延迟时间。流数据库通常不采用列式存储,但可能实现向量化执行以优化查询处理。

总结:

总而言之,对于需要从大量数据中获取实时洞察的组织来说,流处理数据库是一个必不可少的系统。通过提供实时处理、可扩展性和可靠性,流处理数据库可以帮助组织做出更明智的决策,识别机会,并实时应对威胁。

声明: 作者是 RisingWave Labs 的员工,并在本文中讨论了该公司的产品或服务。本文中表达的观点和意见是作者的个人看法,旨在提供有益的信息并推广 RisingWave 的产品或服务。在评估内容时,请考虑作者与 RisingWave Labs 的关系。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消