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