什么是流式数据库?
流式处理数据库是一种专门设计用于处理大量实时流数据的数据库。与在处理之前批量存储数据的传统数据库不同,流数据库在生成数据后立即对其进行处理,从而实现实时洞察和分析。与不保留数据的传统流处理引擎不同,流数据库可以存储数据并响应用户数据访问请求。流数据库是实时分析、欺诈检测、网络监控和物联网 (IoT) 等延迟关键型应用程序的理想选择,并且可以简化技术堆栈。
简史
流数据库的概念于2002年首次在学术界引入。来自布朗大学、布兰代斯大学和麻省理工学院的一组研究人员指出了管理数据库内部数据流的需求,并建立了第一个流数据库Aurora。几年后,该技术被大型企业采用。排名前三的数据库供应商Oracle,IBM和Microsoft连续推出了他们的流处理解决方案,称为Oracle CQL,IBM System S和Microsoft SQLServer StreamInsight。这些供应商不是从头开始开发流数据库,而是直接将流处理功能集成到其现有数据库中。
自 2000 年代后期以来,受 MapReduce 启发的开发人员将流处理功能与数据库系统分离,并开发了大规模的流处理引擎,包括 Apache Storm、Apache Samza、Apache Flink 和 Apache Spark Streaming。这些系统旨在持续处理摄取的数据流,并将结果交付给下游系统。但是,与流式数据库相比,流处理引擎不存储数据,因此无法为用户启动的即席查询提供服务。
流数据库与流处理引擎并行发展。两个流数据库PipelineDB和KsqlDB是在2010年代开发的,当时很流行。在 2020 年代初期,出现了一些基于云的流媒体数据库,如 RisingWave、Materialize 和 DeltaStream。这些产品旨在为用户提供云中的流式数据库服务。为了实现这一目标,重点是设计一个充分利用云资源来实现无限水平可扩展性和最高成本效益的架构。
典型用例
流式数据库非常适合需要最新结果的实时应用程序,新鲜度要求从亚秒到几分钟不等。IoT 和网络监控等应用程序需要亚秒级延迟,广告推荐、库存仪表板和食品配送等应用程序的延迟要求可能从数百毫秒到几分钟不等。流