跳到主要内容

幂等复制

概述

在流式复制阶段文件到表时,有可能某些文件已经复制过,因此需要一些方法来避免重复复制文件,使其成为一个 幂等 操作。

在元服务中保存复制到表的阶段文件元信息

每当复制阶段文件到表时,将阶段文件的元信息保存到元服务中:

  • 键: 结合 (租户, 数据库, 表, 文件名)
  • 值: 值必须包含阶段文件的所有元信息,例如 content-lengthetag最后修改时间

阶段文件元信息的默认过期时间为 64 天。

避免在复制阶段文件到表时重复

使用阶段文件元信息,每当复制阶段文件到表时,遵循以下步骤:

  • 首先,获取想要复制到表中的所有阶段文件的表文件元信息(如果有)。
  • 其次,获取所有阶段文件的元信息。
  • 第三,比较表文件元信息与阶段文件元信息:
    • 如果它们匹配,则忽略此文件,不进行复制。
    • 否则,复制阶段文件并更新插入到表阶段文件元信息中。

以上图为例:

  • 客户端请求将三个文件(file1, file2, file3)复制到表中。
  • 获取 (file1, file2, file3) 的表阶段文件元信息。
  • 在元服务中,仅找到 (file1, file3) 阶段文件信息。
  • 比较表阶段文件信息与阶段文件信息,发现 file1 未更改,因此在此次复制操作中将忽略 file1,而 (file2, file3) 将被复制。
  • 复制新文件后,(file2, file3) 阶段文件信息将被保存到表文件信息中。
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册