目标位置

概览

Datastream 的数据流目标位置是 Cloud Storage。

在这一部分中,您将学习如何:

  • 设置此数据流目标位置
  • 指定目标存储桶和前缀以确定数据在目标位置中写入的具体位置
  • 与写入目标位置的数据关联的行为

设置

如果目标 Cloud Storage 存储桶与 Datastream 位于同一项目中,则启用 Datastream API 便已足够。

如果您要向另一项目中的存储桶写入数据,则必须向 DataStream 关联的服务帐号授予访问此存储桶所需的权限。

  1. 获取用于服务帐号的电子邮件地址。为此,请在 Cloud Console 首页中找到相应的项目编号。服务帐号的电子邮件地址将是 service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com
  2. 向此电子邮件地址授予写入目标存储桶所需的权限(通常是 roles/storage.objectViewerroles/storage.objectCreatorroles/storage.legacyBucketReader 权限)。

指定目标存储桶和前缀

在数据流配置中提供项目名称、存储桶名称和可选文件前缀,以确定数据的写入位置。

写入行为

  • 给定数据流的数据将写入提供的存储桶或文件前缀,位置为 [bucket]/[prefix]/[object name]/yyyy/mm/dd/hh/mm/[filename(idempotent)]
  • 数据库源路径中的对象名称是架构名称,后跟表名称(以下划线“_”分隔)。
  • 路径中的时间戳 (hh/mm) 是事件元数据中的源时间戳。
    • 对于回填事件,时间戳表示回填任务的开始时间(通常是数据流启动时间或手动触发回填的时间)。
    • 对于 CDC 事件,时间戳表示记录在来源上发生更改的时间。
  • 每当达到文件大小上限或超时上限(以先发生者为准),就会轮替文件。
  • 此外,每次检测到源架构更改时(例如添加新列),都会轮替文件。
  • 同一路径中同一分钟可能有多个文件。
  • 您可以根据 Cloud Storage API 使用数据。

在某些情况下,最常是在数据流首次开始运行时,回填和 CDC 之间会出现重叠,这导致出现重复事件。当 Datastream 开始从当前数据库日志文件(在数据流启动之前创建)中读取数据时,会发生这种情况,并且此日志文件包含一些还由回填捕获的事件。这是预期行为,可以在必要时使用事件元数据来消除重复事件。