借助 Datastream,您可以将关系型数据库和其他来源的数据近乎实时地注入到 BigQuery、Apache Iceberg 表和 Cloud Storage 等目的地。然后,您可以在 BigQuery 中使用复制的数据进行数据仓储和分析,或者运行 Apache Spark 作业以处理人工智能和机器学习工作负载。
概念
本部分介绍了有效使用 Datastream 所需了解的主要概念。
变更数据捕获
变更数据捕获 (CDC) 是一组 软件设计 模式,用于 确定和跟踪已更改的数据,以便应用可以处理更新。 CDC 也是一种数据集成方法,它基于对企业数据源所做更改的识别、捕获和交付。
事件溯源
事件溯源设计 模式会在事件对象中捕获对应用状态的每一项更改。 通过使用事件溯源,应用可以重建其状态、执行 时间点恢复 (通过处理到该时间点的事件)、在业务逻辑 更改时重新计算状态,或启用 命令查询职责分离 (CQRS) 架构。随着实时事件处理工具的发展,许多应用都使用事件溯源模型。事务型数据库本质上是面向事件的,以 满足 原子性、一致性、隔离性和持久性 (ACID) 要求。
事务型数据库
在事务型数据库中,数据库执行的一组操作通常
会在存储引擎上执行任何
操作之前写入预写
日志 (WAL)。在存储引擎上执行操作并提交到 WAL
后,该操作将被视为成功。使用 WAL 可实现原子性和持久性,还可实现数据库的高保真复制。某些数据库会将存储层发生的具体操作(例如
write 0x41 at location 20)写入日志,因此这些操作只能在同一存储引擎上复制。其他数据库会记录完整的逻辑语句(或行),这些语句可以在不同的存储引擎上重新执行。
事件和数据流
Datastream 会近乎实时地从各种来源注入大量数据,并使这些数据可在目的地中使用。Datastream 存储的数据单位是一个事件。数据流表示从来源持续注入事件并将其写入目的地。
统一类型
数据源有自己的数据类型,有些是数据库特有的,有些是通用的,可在数据库之间共享。由于多个来源会生成数据流到统一目的地,因此需要跨所有来源对原始来源类型进行标准化表示。统一 类型是跨所有来源的数据类型的通用无损 表示,以便可以统一 使用数据。Datastream 支持的统一类型表示受支持的来源系统中的所有标准化类型的超集。
实体上下文
Datastream 有 5 个实体:
- 借助专用连接配置 ,Datastream 可以通过安全的专用网络连接与数据源进行通信。这种通信通过虚拟私有云 (VPC) 对等互连进行。
- 连接配置文件 表示特定来源或目标数据库的连接信息。
- 数据流 表示来源和目标连接配置文件对,以及数据流专用设置。
- 对象 表示数据流的一部分。例如,数据库数据流为每个流式传输的表都有一个数据对象。
- 事件 表示给定对象的每个数据操纵语言 (DML) 更改。
创建专用连接 配置后, 您可以通过专用 通信渠道连接到托管在 Google Cloud 或托管在其他位置的来源。专用连接是可选的。 Datastream 还支持通过公共网络进行的其他连接模式。
为来源和 目的地创建连接 配置文件后,您可以创建使用 连接配置文件中存储的信息将数据从来源传输到目的地的数据流。
创建数据流后,Datastream 会直接连接到来源,使用内容,然后根据事件结构处理事件并将其写入目的地。
您可以单独管理专用连接配置和连接配置文件,以便重复使用。
特性
Datastream 的特性包括:
- 无服务器: 配置一个数据流,数据就会开始移动。这样可省去安装、资源分配和维护方面的开销。随着数据量的变化,Datastream 的自动扩缩功能会自动分配资源,让数据保持近乎实时地移动。
- 基于 Avro 的统一类型架构: Datastream 通过将所有来源特定的数据类型转换为基于 Avro 类型的统一 Datastream 类型架构,实现与来源无关的处理。
- 流式传输历史数据和 CDC 数据: Datastream 会近乎实时地同时流式传输历史来源数据和 CDC 来源数据。
- Oracle CDC,无需额外许可: Datastream 提供基于 LogMiner 的 CDC 流式传输,适用于任何 Oracle 来源版本 11.2 及更高版本,无需额外许可或软件安装。
- BigQuery 目的地: 来源中的更改会近乎实时地持续复制到 BigQuery 表。 BigQuery 中的数据可用于分析,延迟极小。
- Cloud Storage 目的地: CDC 数据会持续写入 Cloud Storage 中自描述的 Avro 或 JSON 文件。这些数据可用于其他处理,可以直接在本地处理,也可以通过将数据加载到 Spanner 等其他目的地进行下游处理。
- 使用 Knowledge Catalog 进行集中式元数据管理: Datastream 资源(例如数据流、连接配置文件和连接配置)会自动与 Knowledge Catalog 同步。 这样,您就可以直接在 Knowledge Catalog 界面中搜索和浏览这些资产。
使用场景
Datastream 有 3 种主要的使用场景:
- 数据集成:来自数据库和软件即服务 (SaaS) 云服务的数据流可以通过将数据加载到 BigQuery 中,为近乎实时的数据集成流水线 提供数据。
- 流式分析:数据库中的更改会注入到使用 Dataflow 的流处理流水线中,以进行欺诈检测、安全性事件处理和异常值检测。
- 近乎实时地提供数据更改:近乎实时地提供数据 更改,可为人工智能和机器学习应用提供支持,以防止客户流失或通过 营销活动或将数据反馈到生产系统来提高互动度。
行为概览
借助 Datastream,您可以将多个数据 源的持续更改直接流式传输到 Google Cloud。
来源
- 在 Datastream 中使用来源之前,您必须配置身份验证和其他来源选项。
- 每个来源都会生成反映所有数据操纵语言 (DML) 更改的事件。
- 每个数据流都可以回填历史数据,并将持续更改流式传输到目的地。
目的地
Datastream 支持 BigQuery、Apache Iceberg 表和 Cloud Storage 作为 目的地。创建数据流时,您需要定义其目的地配置。
事件交付
- 事件顺序无法 保证。事件元数据 包含可用于对事件进行排序的信息。
- 事件交付至少发生一次。事件元数据包含可用于移除目的地中的任何重复数据的数据。
- 对于 BigQuery 目的地,每个事件的大小上限为 20 MB;对于 Cloud Storage 目的地,每个事件的大小上限为 100 MB。
如需详细了解事件,请参阅事件和数据流。
高可用性和灾难恢复
Datastream 可在可用区之间提供高可用性,并在区域服务中断期间管理灾难恢复:
高可用性: Datastream 是一项区域服务, 在每个区域的多个可用区中 运行。任何一个区域中的单可用区故障都不会影响其他可用区中服务的可用性或质量。
灾难恢复: 如果某个区域发生故障,则在该区域中运行的所有数据流在该服务中断期间都不可用。服务中断解决后,Datastream 会从停止的位置继续运行,并且任何尚未写入目的地的数据都会从来源中重新检索。在这种情况下,目的地中可能存在重复数据。如需了解如何移除重复数据, 请参阅 事件交付。
初始数据和 CDC 数据
由于数据源在连接到数据流之前就存在数据(历史数据),因此 Datastream 会从历史数据和实时发生的数据更改中生成事件。
为确保快速访问数据,历史数据和实时数据更改会同时复制到目的地。事件元数据会指明事件 是来自回填还是来自 CDC。