Skip to main content
このページでは、ClickPipes を使用して DynamoDB から ClickHouse への CDC (変更データキャプチャ) を設定する方法を説明します。このインテグレーションは、次の 2 つのコンポーネントで構成されています。
  1. S3 ClickPipes による初期スナップショット
  2. Kinesis ClickPipes によるリアルタイム更新
データは ReplacingMergeTree に取り込まれます。このテーブルエンジンは、更新操作を適用できるようにするため、CDC のユースケースで一般的に使用されます。このパターンの詳細については、以下のブログ記事を参照してください。
1

Kinesis Stream を設定する

まず、変更をリアルタイムで取得するために、DynamoDB テーブルで Kinesis Stream を有効にします。データの取りこぼしを防ぐため、スナップショットを作成する前にこれを行います。 AWS のガイドはこちらにあります。
2

スナップショットを作成する

次に、DynamoDB テーブルのスナップショットを作成します。これは、AWS から S3 にエクスポートすることで実行できます。AWS のガイドはこちらにあります。 DynamoDB JSON フォーマットで「Full export」を実行してください。
3

スナップショットを ClickHouse に読み込む

必要なテーブルを作成する

DynamoDB から取得したスナップショットデータは、次のようになります:
データがネストされた形式になっていることに注目してください。このデータを ClickHouse に読み込む前に、フラット化する必要があります。これは、ClickHouse の materialized view で JSONExtract 関数を使って行えます。作成するテーブルは 3 つあります。
  1. DynamoDB の生データを格納するためのテーブル
  2. 最終的なフラット化済みデータを格納するためのテーブル (宛先テーブル)
  3. データをフラット化するための materialized view
上記の DynamoDB データ例に対しては、ClickHouse のテーブルは次のようになります。
宛先テーブルには、いくつかの要件があります。
  • このテーブルは ReplacingMergeTree テーブルである必要があります
  • テーブルには version カラムが必要です
    • 後続の手順では、Kinesis Stream の ApproximateCreationDateTime フィールドを version カラムにマッピングします。
  • テーブルでは、パーティションキーをソートキー (ORDER BY で指定) として使用する必要があります
    • 同じソートキーを持つ行は、version カラムに基づいて重複排除されます。

スナップショット ClickPipe を作成する

これで、S3 から ClickHouse にスナップショットデータを読み込むための ClickPipe を作成できます。こちらの S3 ClickPipe ガイドに従ってください。ただし、以下の設定を使用します。
  • 取り込みパス: S3 内でエクスポートされた JSON ファイルのパスを特定する必要があります。パスは次のようになります:
  • フォーマット: JSONEachRow
  • テーブル: スナップショットテーブル (上記の例では default.snapshot)
作成が完了すると、スナップショットテーブルと宛先テーブルへのデータ投入が始まります。スナップショットの読み込みが完了するのを待たずに、次の手順に進んでかまいません。
4

Kinesis ClickPipeを作成する

これで、Kinesis Stream からリアルタイムの変更を取り込むための Kinesis ClickPipe を設定できます。こちらの Kinesis ClickPipe ガイドに従ってください。ただし、以下の設定を使用します。
  • Stream: 手順 1 で使用した Kinesis Stream
  • Table: 宛先テーブル (例: 上記の default.destination)
  • Flatten object: true
  • Column mappings:
    • ApproximateCreationDateTime: version
    • 以下に示すように、他のフィールドを適切な宛先カラムにマッピングします
5

クリーンアップ(任意)

スナップショット用の ClickPipe が完了したら、スナップショットテーブルと materialized view を削除できます。
最終更新日 2026年7月24日