实时分析数据库——物还是非物?

实时分析数据库——物还是非物?

翻译自 Real-time Analytic Databases — Thing or Not a Thing?

也称为流式数据库,这一独特的类别针对近乎实时地处理和分析大容量、高速数据进行了优化。

虽然“实时”这个术语在某些情况下可以用作营销手段,但实时分析数据库和传统分析数据库之间存在着真正的技术和功能差异。实时分析数据库(也称为流式数据库)是一类专门针对近乎实时处理和分析高容量、高速数据的分析数据库。

传统分析数据库则是专门针对批处理模式下处理大量历史数据进行优化的。虽然这些数据库可以提供有价值的过去趋势和模式分析,但它们并不适用于实时决策或将分析集成到 Web 规模的下游应用程序中。

常见的传统分析数据库包括 Snowflake 、 Greenplum 、 BigQuery 、 Redshift 和 Teradata 等。

另一方面,实时分析数据库可以在数据到达时处理和分析数据,使组织能够根据最新信息做出明智的决策并立即采取行动。

它们被设计为提供低延迟查询、快速摄入和可扩展处理现代设备、机器和传感器生成的流数据的能力。这类数据库的例子包括 Kinetica 、 Pinot 、 Druid 、 Rockset 、 Materialize 、 ClickHouse 、 SingleStore 和 Aerospike 等。

“钢铁人”论据反驳了实时分析数据库与传统分析数据库根本不同的观点,认为实时分析数据库只是传统分析数据库范式的扩展,增加了实时能力。这种区别更多的是程度上的区别,而不是基本技术的根本转变。

支持这一论点的人指出,实时分析数据库和传统分析数据库都是为存储和分析大量数据而设计的,数据存储、索引和查询的基本原则在两种情况下基本相同。此外,许多传统分析数据库现在提供一定程度的实时处理能力,例如微批量加载或最新的查询加速技术,模糊了两个类别之间的区别。

该论点的支持者指出,实时分析数据库和传统分析数据库都是为存储和分析大量数据而设计的,两者的数据存储、索引和查询的基本原理基本相同。此外,许多传统的分析数据库现在提供某种程度的实时处理能力,例如微批处理加载或最新的查询加速技术,模糊了这两个类别之间的区别。

为了证明实时分析数据库是一个独特的类别,可以考虑下面基于数据延迟和查询延迟的框架。数据延迟指生成数据和数据可用于处理和分析之间的时间延迟。这种延迟可能由多种因素引起,但主要是由于网络速度和摄入开销。

查询延迟是指查询提交到数据处理系统和返回查询结果之间的时间延迟。查询延迟主要取决于查询的复杂性、查询的数据量、存储类型和查询引擎的复杂程度。

数据延迟差异

流数据摄取需要实时处理数据,通常通过持续的数据流进行。最佳的实时分析数据库应该具备三个关键功能来大幅减少数据延迟:

  1. 本地流连接器将流数据源(如 Kafka 、 NiFi 、 Kinesis 等)优化为数据库摄取数据。使用本地流连接器可以提供比通用数据库连接器更快的摄取速度、更高的可靠性和更简化的集成等多种优点。领先的实时分析数据库具备 sink 和 source 的本地流连接器。
  2. Headless ingest 在需要支持从大量来源(想想数万个不同的传感器)摄取数据的系统中特别有用,因为它允许以分散的方式摄取数据,而无需中央协调点这是一个瓶颈。
  3. 数据库中的无锁架构是指在多用户环境中最小化或消除锁的使用,以控制对共享资源的访问。锁通常用于防止两个或多个事务同时访问相同的数据,这可能导致数据不一致。然而,锁定显著导致数据延迟,因为在加载过程中表会被锁定,并且在加载完成并解锁表之前,新加载的数据不可查询。在无锁架构中,通过乐观并发控制或多版本并发控制等替代方法确保一致性和并发控制,而不使用锁。这些方法允许多个事务同时访问相同的数据,而不使用锁。相反,数据库使用时间戳或版本号来跟踪数据的更改并解决冲突。在高容量、分布式或实时数据库系统中,无锁架构可以提供更好的可扩展性和性能。但是,它们还需要精密的算法和仔细的设计来确保数据一致性和正确性。

传统的分析数据库没有本地流连接到 source 和 source ,通过协调点集中进行摄取,同时广泛使用表锁定,这一点共同导致了显著的数据延迟。

查询延迟差异

一旦数据可供查询,查询的速度就很重要。一流的实时分析数据库将具有三个基本功能,以从根本上减少查询延迟。

  1. 由于突破性的数据库设计创新(想想分布式、列式、内存中),查询性能经常会发生阶跃函数变化。最新的创新是矢量化(又名数据级并行)。向量化查询引擎将数据存储在固定大小的块(称为向量)中,并在这些向量而不是单个数据元素上并行执行查询操作。这种方法使查询引擎能够同时处理多个数据元素,从而使查询执行速度提高一个数量级并提高性能。通过使用这种矢量化方法,查询引擎不仅可以提高查询性能,还可以最大限度地减少所需的计算和数据工程(减少索引和非规范化)。 TPC-DS 基准测试证明了这一点。
  2. 在某些情况下,实时洞察的最终用户不是数据科学家或业务用户团队,而是成千上万使用数据注入应用程序(想想拼车应用程序或金融交易台)的人。为了支持大量的高速读取,必须将洞察力从分析数据库(例如柱状数据库)转移到操作数据库(例如键值数据库)。这是一个增加了更多延迟和复杂性的跃点。现代实时分析数据库通过融合这些设计模式来解决这个问题。
  3. 传统的分析数据库并没有完全矢量化,因为它们有太多的技术债务,无法利用这项创新并矢量化所有操作。传统的分析数据库仍然依赖物化视图的旧模型,并将大规模高速读取视为不同数据库的任务。总而言之,实时分析数据库为下一代数据注入应用程序提供了最新鲜的洞察力。

传统的分析数据库并没有完全矢量化,因为它们有太多的技术债务,无法利用这项创新并矢量化所有操作。传统的分析数据库仍然依赖物化视图的旧模型,并将大规模高速读取视为不同数据库的任务。总而言之,实时分析数据库为下一代数据注入应用程序提供了最新鲜的洞察力。

这并不是说所有的实时分析数据库都是一样的。有些为连接和临时查询提供更好的支持。有些是开源的。一些专注于网络日志数据,而另一些则对传感器和机器数据所需的时间序列和空间提供强大的支持。无论您的实时数据库需要什么,总有一款适合您的用例。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注