工程资源 / 什么是实时分析?

什么是实时分析?

实时分析指的是数据处理,它在数据生成后立即向最终用户和客户提供洞察。它与传统或批处理分析不同,在传统或批处理分析中,数据被分批收集和处理,通常在数据生成后很长时间才进行。

实时分析系统构建于事件流之上,事件流由一系列按时间顺序排列的事件组成。事件是已经发生的事情。它可以是在电子商务网站上向购物车添加商品、来自物联网 (IoT) 传感器的读数发射,或者是足球比赛中的射门。

一个事件的例子(来自一个假想的物联网传感器)如下:

{
  "deviceId": "sensor-001",
  "timestamp": "2023-10-05T14:30:00Z",
  "eventType": "temperatureAlert",
  "data": {
    "temperature": 28.5,
    "unit": "Celsius",
    "thresholdExceeded": true
  }
}

组织可以通过聚合和分析此类事件来发现有关其客户的洞察。传统上,这是使用批处理分析完成的,在下一节中,我们将比较批处理分析和实时分析。

实时分析 vs 批处理分析

下图显示了从单个事件的角度来看,典型的批处理分析系统是什么样的

您可以看到,从事件发生到我们处理并从中获得一些洞察之间存在相当大的差距。传统上,这是数据分析的唯一手段,我们需要创建人为的时间界限来分批处理数据。例如,我们可能会处理一天结束时收集的所有数据。这适用于许多用例,但对于其他用例来说,这是次优的,因为我们正在处理过时的数据,并且它不允许我们足够快地对数据做出反应。

相比之下,在实时分析系统中,我们在事件发生后立即做出反应,如下面的图表所示

我们现在几乎可以在事件生成后立即从中获得洞察。但为什么这有用呢?

实时分析的优势

在当今快节奏的世界中,组织依靠实时分析来保持敏捷性并对不断变化的条件做出响应。实时分析系统可以在很多方面使企业受益。

更好的决策

通过实时分析访问可操作的洞察,可以改进决策。当业务运营者可以实时看到事件发生时,就更容易做出及时的干预。

例如,如果我们对应用程序进行更改并想知道它是否对用户体验产生不利影响,我们希望尽快知道这一点,以便在必要时可以恢复更改。使用不太实时的方案,我们可能必须等到第二天才能进行此分析,到那时我们将有很多不满意的用户。

新产品和收入来源

实时分析可以帮助企业产生新的收入来源。组织可以开发新的以数据为中心的产品和服务,让用户可以访问分析查询功能。这些产品通常足够吸引用户付费访问。

此外,可以使现有应用程序更具粘性,从而提高用户参与度和留存率。这将导致更多的应用程序使用,为组织创造更多的收入。

改善的客户体验

借助实时分析,企业可以立即获得对客户行为、偏好和需求的洞察。这使企业能够提供及时的帮助、个性化互动,并创造更具吸引力的体验,让客户不断回头。

实时分析用例

当我们考虑实时分析的实际应用时,它的实际价值就变得显而易见了。让我们检查其中的一些。

欺诈检测

欺诈检测是关于检测欺诈模式,范围从虚假账户到支付欺诈。我们希望尽可能快地检测到这种欺诈,标记可疑活动,阻止交易,并在必要时禁用账户。

此用例跨越多个行业:医疗保健、数字银行、金融服务、零售等等。

Instacart 是北美领先的在线杂货公司,拥有数百万活跃客户和购物者。它使用 ClickHouse 作为其欺诈检测平台 Yoda 的一部分。除了上面描述的一般类型的欺诈之外,它还试图检测客户和购物者之间的勾结。

他们确定了 ClickHouse 的以下特性,这些特性实现了实时欺诈检测

ClickHouse 支持基于 LSM 树的 MergeTree 系列引擎。这些引擎针对写入进行了优化,适用于实时摄取大量数据。

ClickHouse 被设计和优化专门用于分析查询。这完全符合需要持续分析数据以查找可能表明欺诈的模式的应用程序的需求。

➡️ 了解更多关于 Instacart 如何在视频记录博客文章中使用 ClickHouse 进行欺诈检测用例的信息。

时间敏感型决策

时间敏感型决策是指用户或组织需要根据可用的最新信息快速做出明智选择的情况。实时分析使使用者能够在动态环境中做出明智的选择,无论他们是交易员对市场波动做出反应,消费者做出购买决定,还是专业人士适应实时运营变化。

Coinhall 通过蜡烛图向其用户提供关于价格随时间变化的实时洞察,该图显示每个交易期间的开盘价、最高价、最低价和收盘价。他们需要能够快速运行这些类型的查询,并支持大量并发用户。

在性能方面,ClickHouse 是明显的赢家,执行蜡烛图查询只需 20 毫秒,而其他数据库则需要 400 毫秒或更长时间。它在 8 毫秒内运行最新价格查询,超过了次优性能 (SingleStore) 的 45 毫秒。最后,它在 50 毫秒内处理了 ASOF JOIN 查询,而 Snowflake 花费了 20 分钟,Rockset 超时。

➡️ 了解更多关于 Coinhall 如何使用 ClickHouse 进行时间敏感型决策用例的信息。

可观测性

许多组织运行在线服务,如果出现问题,他们需要能够尽快解决问题。实时分析使他们能够在使用日志、事件和追踪的情况下调试正在发生的问题。此用例具有高插入工作负载和对低延迟分析查询的需求。

LangChain 是一个流行的软件框架,可帮助用户构建使用大型语言模型的应用程序。他们构建了一个名为 LangSmith 的商业产品,这是一个用于 LLM 应用程序可观测性和评估的统一开发平台,它在底层使用了 ClickHouse。

LangSmith 让用户了解他们的 LLM 应用程序中正在发生的事情,并允许他们调试代理工作流。它还有助于开发人员检测过多的令牌使用,这是一个他们希望尽快检测到的代价高昂的问题。

当使用 LLM 应用程序时,总会有许多移动部件,包括链式 API 调用和决策流。这使得理解底层发生了什么变得具有挑战性,用户需要调试无限代理循环或令牌使用过多的情况。LangSmith 看到了这里的明显需求,最初是作为一个可观测性工具,通过在 LLM 序列的每个步骤提供清晰的可视性和调试信息,帮助开发人员诊断和解决这些问题。

我们想要一些架构上易于部署且不会使我们的基础设施更复杂的东西。我们研究了 Druid 和 Pinot,但这些都需要用于摄取的专用服务,连接到 Kafka 等排队服务,而不是简单地接受 INSERT 语句。我们渴望避免这种架构复杂性,

➡️ 了解更多关于 LangChain 如何使用 ClickHouse 进行可观测性用例的信息。

还有许多其他用例,包括

  • 实时广告分析:让买家和卖家能够细分和分析广告效果数据。
  • 内容推荐:每次用户登录时,根据他们通常消费和互动的内容,向他们展示新鲜有趣的内容。
  • 异常检测:实时识别数据中可能表明需要解决的问题的异常模式。
  • 基于使用量的定价:通过实时分析进行精确计量,可防止在动态云环境中超额使用并确保公平收费。
  • 短期预测:使用最新的使用数据计算预测需求,并在多个维度上进行细分。

实时分析系统的特性

我们构建的系统必须具有特定的特性,才能实现前两节中描述的优势和用例。

摄取速度

我们主要处理流数据,其价值会随着时间的推移而降低。因此,我们需要快速的数据摄取过程,以使数据可用于查询。我们应该在实时分析系统中看到更改,只要它发生。

数据生成和数据可用于查询之间总会存在一些滞后。我们需要尽可能缩小这种滞后。

查询速度

一旦数据被摄取,我们必须确保它可以快速查询。我们应该以网页响应时间为目标,即查询的运行时间和返回结果的时间应为亚秒级,理想情况下为 100 毫秒或更短。

系统必须始终保持快速的查询响应。即使在高容量数据摄取期间也应如此。

并发

实时分析系统通常面向用户,并且必须处理许多并发查询。这些系统通常支持每秒数万或数十万次查询。

这些特性通常在像 ClickHouse 这样的列式数据库中看到。

实时分析的数据源

实时分析系统基于事件,通常由流数据平台管理。这些系统充当事件数据的真实来源,并且可以处理正在生成和使用的大量和高并发数据。事件被持久存储并被下游系统使用。

流数据平台有很多不同的提供商,包括 Redpanda、Apache Pulsar 和 Amazon Kinesis,但撰写本文时最流行的是 Apache Kafka

除了处理实时数据外,我们还必须支持变化较慢的数据,例如产品目录、客户资料或地理数据。这些数据可能驻留在另一个数据库、文件系统或云存储桶中,因此我们需要从那里摄取它。

什么是实时分析数据库?

任何实时分析系统的核心都是一个数据库,它可以快速摄取数据并大规模地提供低延迟查询服务。这些数据库是联机分析处理 (OLAP) 数据库的子集,但有一些显着差异。

传统的 OLAP 数据库是为批处理分析而设计的,我们之前已经了解过。它们用于面向内部的用例,在这些用例中,每天或最多每小时刷新一次数据就足够了。这种方法不适用于具有预期亚秒级查询响应时间的用户界面应用程序。

实时数据库必须每秒摄取数十万或数百万条记录,并立即将这些数据提供给查询,从而为用户提供对最新数据的访问。

为什么选择 ClickHouse Cloud 进行实时分析?

ClickHouse Cloud 是一个实时数据分析平台。它提供了一个完全托管的、基于云的 ClickHouse 版本,并且还附带 ClickPipes,这是一个集成引擎,可简化从各种来源(包括 Amazon S3 和 Apache Kafka)持续摄取数据。

您可以在下图看到 ClickHouse Cloud 的架构

ClickHouse 具有实时分析系统所需的特性,本文前面已对此进行了描述。

摄取速度

它可以轻松地每秒摄取数十万甚至数百万条记录。早在 2018 年,Cloudflare 就以每秒 600 万条记录的速度进行摄取。它还可以从广泛的来源摄取数据。ClickPipes 为从 Confluent Cloud、Amazo S3、Azure EventHubs 等摄取数据提供企业级支持。此外,ClickHouse 还与 集成 Apache Iceberg、MongoDB、MySQL、AirByte 等。

查询延迟

查询性能是 ClickHouse 开发期间的首要任务。即使在数据量很大的情况下,ClickHouse Cloud 客户通常也会看到秒级亚秒级的查询延迟。这是通过数据存储方式、压缩方式以及使用数据结构来确保仅处理相关数据来实现的。

ClickHouse 还使用向量化查询执行,并在内核和服务器之间并行化查询执行。用户还可以使用物化视图来减少在查询延迟处于高位时需要扫描的行数。

并发

ClickHouse 旨在处理高并发工作负载。它经常用于组织希望向其用户提供实时分析功能的应用程序中。它也用于实时仪表板中,在实时仪表板中,用户较少,但每个仪表板刷新都会产生多个查询。

开始使用 ClickHouse Cloud 进行实时分析

希望您很高兴为您的应用程序添加实时分析功能。让我们看看如何做到这一点。

第一步是导航到 clickhouse.cloud 并创建一个帐户以获得 30 天的免费试用。完成此操作后,在云和您选择的区域中创建一个服务。初始化服务需要几分钟时间,但之后我们就可以导入一些数据了。

您还可以观看以下视频,了解上述步骤

一旦您的服务启动并运行,我们需要执行以下步骤

  1. 使用 ClickPipes 摄取数据。
  2. 使用 ClickHouse Cloud SQL 控制台编写查询。
  3. 基于这些查询创建查询端点。

让我们更详细地了解一下这些步骤中的每一个。

使用 ClickPipes 摄取数据

ClickPipes 是一个集成引擎,它使从各种来源摄取海量数据变得像单击几个按钮一样简单。它支持各种来源,包括流数据和静态数据。

您可能希望使用它从 Confluent Cloud 或其他流数据平台之一摄取数据。您必须填写您的凭据并选择您要摄取的主题。然后,ClickPipes 将通过对所选主题中的某些消息进行采样来推断表架构,然后再创建表并将数据摄取到其中。

在 SQL 控制台中编写查询

一旦数据被摄取,您可以使用 SQL 控制台浏览它。单击表将显示其内容,您可以查看和筛选。

您也可以手动编写查询,SQL 控制台提供了丰富的 UI 来编辑查询,如果您的 SQL 有点生疏,甚至还有 AI 助手。您还可以创建可视化效果以更好地理解查询结果。

创建查询端点

一旦您对您的查询感到满意,您可以保存它并与您组织中的其他用户共享。您还可以为查询创建 API 端点。查询 API 端点直接从 ClickHouse Cloud 控制台中的任何已保存的 SQL 查询创建 API 端点。然后,您可以通过 HTTP 访问 API 端点来执行您保存的查询,而无需通过本机驱动程序连接到您的 ClickHouse Cloud 服务。

您可以在博客文章《使用 ClickHouse Cloud 查询端点在 10 分钟内向应用程序添加分析功能》中阅读更多关于查询端点的信息

分享此资源
关注我们
X imageSlack imageGitHub image
Telegram imageMeetup imageRss image
©2025ClickHouse, Inc. 总部位于加利福尼亚州湾区和荷兰阿姆斯特丹。