流数据库与传统数据库有何不同?
#编程 #sql #database #流媒体

流数据库与传统数据库

在当今的数字时代,企业比以往任何时候都拥有更多的数据。可以利用大量信息来做出更好的决策,优化运营并改善客户体验。为了充分利用这些数据,企业需要一个能够实时处理大量数据的数据库。这些要求使我们进入了几种类型的数据库的革命: nosql数据库,新闻QL数据库,时间序列数据库,内存数据库或内存数据网格网格

流媒体数据库(事件流数据库)是它们的,该数据库旨在处理可实时生成和处理的数据。但是,有时会使选择处理,处理和分析您的数据实时的数据库混淆。

这篇文章探讨了流数据库的需求,将其与传统的SQL数据库进行比较,,并引导您完成的相似性,差异和用例

需要流数据库

streaming architecture还需要现代查询范式。使用传统的数据库系统,查询与现有数据的有限集一起运行。在每个查询中,当前时间都会返回一组数据,这就是它。要查看随着时间的流逝,您需要再次运行相同的查询,然后再次运行。要获得更新的结果,您需要重复执行查询

使用流系统,基于具有特定结构的数据的知识编写了一个查询。该查询以materialized views的形式位于内存中,并等待数据。由于数据出现在一个或多个传入的data streams上,查询在incremental updates 输出的帮助下,以永无止境的时尚

流媒体数据库在写入时几乎完成了其所有工作。当数据流入流数据库时,它进行了处理,并立即用于更新任何注册查询的结果。当应用程序想读取查询结果时,他们可以查看其随着时间的变化的所有方式。

How Streaming database differs from a Traditional SQL database (2).png

与过去的Extract, Transform, and Load(ETL)系统和集成技术不同,在该系统中,事物是面向批处理的,实时流处理系统连续运行,24/7,以及这些系统中处理的引擎是连续查询。每当新记录出现在数据流上时,查询都会输出新结果。端到端的潜伏期可以从微秒到秒,这取决于需要多少处理,而不是批处理ETL溶液的典型时间甚至几天。

重要的是要了解连续的查询仅限于从数据流中读取。他们可以从内存中的缓存,可能存储的内存参考数据或通过time window functions读取。他们也可以根据流媒体系统的体系结构从其他持续的存储中阅读,例如AWS S3,事件和数据源。

例如,RisingWave是增长最快的开源流数据库之一,可以从Apache KafkaApache PulsarAmazon KinesisRedpandaRedpanda摄入数据库,以及通过使用本机更改捕获连接或使用Debezium connectors to Mysesql的数据库,以及数据库来源。以前,我写了一篇有关how to choose the right streaming database的博客文章,其中讨论了您应该考虑的一些关键因素。

此外,使用流数据库,您可以过滤,汇总,转换和公开实时应用程序中的数据(可视化仪表板,数据湖泊或BI Analytic Platforms)。

这是流数据库中的典型体系结构图。

How Streaming database differs from a Traditional SQL database (3).png

流数据库与传统数据库有相似之处

尽管流数据库专注于流,但它具有传统SQL数据库的许多特征。这些相似之处包括以下内容:

sql接口

像传统的SQL数据库一样,流数据库包括SQL语法,解析器和执行引擎。这意味着可以使用高级声明语言:SQL与任何一种类型的系统中的数据进行交互。 RisingWave’s SQL dialect包含您期望的语言构造,包括用于预测的SELECT FROM,以定义来源或实现的观点,WHERE WHERE for滤波,JOIN for,work for,work for,work for of,work of,work of。

ddlâ和dml语句

ddl(数据定义语言)和DML(数据操纵语言)是流数据库中支持的两个广泛的语句类别。 DDL语句负责专注于创建和破坏数据库对象,而DML语句用于读取和操纵数据。

# DDL example:
CREATE MATERIALIZED VIEW mv_avg_speed
AS
    SELECT COUNT(id) as no_of_trips,
    SUM(distance) as total_distance,
    SUM(duration) as total_duration,
    SUM(distance) / SUM(duration) as avg_speed
    FROM taxi_trips;

# DML example:
SELECT * FROM *mv_avg_speed*;

网络服务和提交查询的客户端

如果您使用了传统的SQL数据库,则可能会期望两件事:您可以通过网络连接到数据库,并且有默认客户端实现(例如,CLI)用于提交查询。流数据库还包括这些功能,您可以使用PostgreSQL CLI工具来编写查询。

模式

您与您交互的集合包含模式定义,其中包括字段名称和类型。此外,就像一些更灵活的数据库系统(例如Postgres)一样,流数据库也支持用户定义的data types

实现的视图

为了优化传统数据库中的读取性能,用户有时会创建实质性的视图,这些视图命名为包含查询结果的对象。但是,在传统系统中,可以更新这些视图。 >(对视图的更新排队以稍后排队,或者必须手动应用)或热切地 <(每当新数据到达时)。急切地维护的视图类似于流媒体数据表示数据的方式以及在新数据可用时立即进行流和表的更新。

数据转换的内置功能和运算符

像许多传统的SQL数据库一样,流数据库包括一组丰富的功能和运算符,用于使用数据。

流数据库与传统数据库的差异

有效地,在流处理中发生的内存连续查询与人们在传统数据库中考虑查询的方式之间存在一些关键差异

首先,流数据库支持连续查询上工作的无限,无限和无限数据流的数据,而不是居住在表中的有限且已知的数据集。

第二,在大多数传统的SQL数据库中,一个查询在某个数据库中起作用并完成,这意味着它会针对当前数据的快照发出查询,并终止​​查询一旦满足请求或错误。在流数据库中,随着传入的数据流介绍新数据,连续内存查询不断产生新的结果

第三,流数据库具有的能力,可以在数据库中订阅SQL查询或视图的更改,该数据库允许您实现基于推动的事件驱动的应用程序。

最后,流数据库使用自己的云本地存储系统在状态流中持续实现的视图和内部状态,您可以在不同的储藏室中复制数据,并且可以将存储层与SQL引擎独立缩放。

流数据库的用例

有很多原因为什么许多IT公司适应流数据库。在高水平上,业务团队看到流数据库可以使它们能够:

  1. Real-time data analysis与数据生成一起。
  2. 为其实时应用程序启用警报和安全系统。
  3. 实时数据从一个内置应用程序转移到针对客户的另一个内置应用程序。
  4. 更新并监视数据作为各种机器学习模型的接口。
  5. 为微服务体系结构构建一个均匀驱动的通信骨干。

结论

总而言之,传统数据库和流数据库是针对不同用例设计的两种不同类型的数据库。流数据库使用熟悉的SQL DB概念来制定强大的流处理功能。许多应用程序需要立即访问数据,例如金融交易应用程序或在线游戏平台。流数据库可以实时处理和分析数据,从而立即访问关键信息。了解这两种类型的数据库之间的差异对于为特定用例选择正确的数据库至关重要。

相关资源

建议的内容

社区

ðJoin the Risingwave Community

关于作者

访问我的个人博客:www.iambobur.com