---
title: CDCとは？スムーズなデータ更新を目指して！
description: このブログではCDCの説明からCDCの3つの方式まで解説します。
---

[BI LAB データ活用研究所 - INSIGHT LAB](https://knowledge.insight-lab.co.jp/bi)

# [CDCとは？スムーズなデータ更新を目指して！](https://knowledge.insight-lab.co.jp/bi/cdc)

 作成者: [BI LAB編集室](https://knowledge.insight-lab.co.jp/bi/author/bi-lab)｜2025年4月9日

## CDCとは

CDC(Change Data Capture：変更データキャプチャ) は、ソースシステム内のデータに加えられた変更(挿入、更新、削除など)をキャプチャするデータ統合パターンです。また、これらの変更は一般にCDCフィードと呼ばれます。

現在では、データはオンプレミスとSaaSの二つの環境で使用していることが多いです。

| １．オンプレミス：企業が自社のサーバーやデータセンターにソフトウェアをインストールし、管理する。データの加工を担当。 ２．SaaS(Software as a Service)：クラウドプロバイダーがインフラを管理し、ユーザーはインターネット経由でサービスを利用する。データの活用を担当。  |
| --- |

 

そのため、オンプレミスでデータを変更した際、SaaSのデータも変更する必要が出てきます。

ここで活躍するのがCDCです！

CDCを活用すると、以下のようになります。

CDCのデータの処理方法は以下の2つのパターンがあります。

まず、2つともデータベースにデータをアップロードします。その後、データの変更の仕方によって変化します。

| １．**データの直接変更のリアルタイム検出と記録**： データベース内のデータが直接変更される場合、CDCがその変更をリアルタイムで検出し、その変更を記録します。これにより、データベース内の最新情報が常に維持されます。 ２．**追加情報を含む再アップロードの処理**： データに変更が加わった場合、再度データをアップロードすると、CDCがその変更部分を検出し、その部分を対象に処理を行います。これにより、効率的に変更データのみを処理できます。 |
| --- |

 

CDCのメリットを用いるメリットは以下の3点です。

| ①**リアルタイム性**：データ変更が即座に反映されるため、最新情報を常に利用可能   ②**効率性**：必要な変更部分だけを転送するので、大量データ処理の負担を軽減   ③**自動化**：手動でデータ更新をする必要が無くなる |
| --- |

 

これにより、データ処理の効率化が見込めます！

 

## もう少し分かりやすくすると...

「専門用語が多くて分からないよ～！」といった方向けに例を用いて分かりやすく説明します。

レストランの予約システムを想像してみてください。

あるお客様が19:00~21:00のコース料理の予約をしました。この場合の動作は以下の通りです。

| １．**お客様が予約をする** - 予約システムで19:00-21:00の予約を確定 - データベースに情報が記録 ２．**CDCが変更を検知** - データベースに「19:00-21:00に予約が入った」という変化が発生したことをCDCがキャッチ ３．**リアルタイムで他のシステムに通知** - キッチンシステム：予約人数に基づいて、必要な食材や準備する料理の量を把握 - スタッフ管理システム：その時間帯に対応するスタッフ数の調整や、担当者への通知 - お客様向け情報：お客様が再度予約ページを見ると、その時間帯は「予約済み」と表示 ４．**結果的な効果** - お客様には正確な空き状況が表示され、ダブルブッキング(重複予約)が防止される - スタッフやキッチンは事前準備を効率的に進められる |
| --- |

 

簡単に図にするとこのような流れです。

このような動作が起こり、お客様が時間通りにレストランに行くと待ち時間無しでご飯を食べることができるというわけです。

これを先ほど同様に3つのポイントにまとめると、

| ①**リアルタイム性**：予約情報が入力された瞬間に他のシステムも最新情報に更新される   ②**効率性**：必要な変更部分だけ(今回の場合、19:00-21:00の新規予約)が処理されるため、無駄なデータ処理が無い   ③**自動化**：手動で情報を共有する必要が無く、全て自動で連携される |
| --- |

 

そのため、「CDC=データの実況放送」とイメージするのが良いと思います！

次は、そのようなCDCの3つの方式について紹介します！

 

### ①クエリベース

1つ目はクエリベースです。

| **クエリ**：ソフトウェアに対するデータの問い合わせや要求などを一定の形式で表現すること |
| --- |

 

図書館や本屋で本を探すとき、検索の機械を使う事があると思います。この時に、「著者名」「タイトル」「ジャンル」といった条件を入力すると思います。この条件がクエリです。

クエリベースでは、データベースに対して定期的にクエリを実行し、変更されたレコードを抽出する方法です。具体的には、テーブルの更新日付やタイムスタンプを条件にして、変更されたレコードを取得します。

例えば、

このように「最終更新日時が2025年2月28日以降」の条件を指定してクエリを実行することで、その日以降に更新されたレコードの抽出が可能です。

メリット：

実装が比較的簡単で、特別なツールや設定が不要。

デメリット：

データ量が多い場合、クエリの実行に時間がかかり、データベースに負荷がかかる可能性がある。削除されたレコードの検出が難しい。

 

### ②トリガーベース

2つ目はトリガーベースです。

| **トリガー**：何かの動作や処理を開始するきっかけとなるイベントや条件 |
| --- |

 

朝7時になるとアラームが鳴る目覚まし時計の場合、朝7時がトリガーです。

トリガーベースでは、データベーストリガーを利用して、データの変更が発生した際に別のテーブルに自動的に変更情報を記録する方法です。トリガーはINSERT(挿入)、UPDATE(更新)、DELETE(削除)の3つの操作に対して設定が可能です。

メリット：

変更が発生した瞬間にデータをキャプチャでき、削除されたレコードも取得可能。

デメリット：

別テーブルの管理による運用の複雑化。トリガーのロジックが複雑になることもある。

 

### ③ログベース

3つ目はログベースです。

| **ログ**：システムやアプリケーションが動作中に記録する出来事や操作の履歴 |
| --- |

 

イメージとしては、買い物のレシートです。レシートには「買い物をした日時」「購入した商品」「金額」といったものが記録されており、これらがログに該当します。

ログベースは、データベースのトランザクションログを解析して変更データを抽出する方法です。トランザクションログには、データベース内で行われたすべての変更が記録されています。

メリット：

トランザクションログとやり取りを行うため、データベースに負担をかける事が無く、リアルタイムで変更の検出が可能。

デメリット：

トランザクションログの解析には専用のツールやソフトウェアが必要で、古いデータベースでは対応していない可能性がある。

 

## ユースケース

ここでは、CDCのユースケースとして2つ紹介します。

 

### ①オンラインショッピング

Amazonで下のような在庫数の表示を見たことはありませんか？

これは人が手打ちしているわけではありません！

商品が購入されるとCDCが変更を検知し、以下の動作を行います。

| 在庫管理システム　➡　在庫数の減少をリアルタイムに反映 販売分析ツール　　➡　販売数をリアルタイムに反映  |
| --- |

 

 

### ②銀行口座アプリ

銀行口座のアプリの場合、「1万円引き下ろした」や「3万円入金した」という情報は即座に口座残高に反映されます。

引用元：[https://www.smbc.co.jp/kojin/spaplli/directapp/](https://www.smbc.co.jp/kojin/spaplli/directapp/)

 

これもCDCが取引の情報を元に以下の動作を行っています。

| 顧客向けのアプリ　➡　口座残高のリアルタイム更新 内部分析システム　➡　リアルタイム分析 |
| --- |

 

## CDCツール4選

CDCツールを4つ紹介します。

### Debezium

オープンソースのCDCツールで、Kafkaと連携してリアルタイムのデータストリーミングを実現します。

| **機能と特徴**：**〇**(オープンソースで協力な機能を持つが、設定に技術的な知識が必要 **対応データソース**：**〇**(主要なデータベースに対応) **使いやすさと導入の容易さ**：**△**(技術的な知識が必要) |
| --- |

 

公式ページ：[https://debezium.io/](https://debezium.io/)

 

### Fivetran

クラウドベースのデータ統合プラットフォームで、CDC機能を提供し、データの自動同期をサポートします。

| **機能と特徴**：**◎**(クラウドベースで自動化されたデータ統合を提供) **対応データソース**：**◎**(150以上のデータソースに対応) **使いやすさと導入の容易さ**：**◎**(セットアップが簡単でメンテナンスが少ない) |
| --- |

 

公式ページ：[https://www.fivetran.com/](https://www.fivetran.com/)

 

### Oracle GoldenGate

エンタープライズ向けの商用CDCツールで、ビジネスクリティカルなシステムで広く利用されています。

| **機能と特徴**：**◎**(エンタープライズ向けで高性能) **対応データソース**：**◎**(多様なデータベースとシステムに対応) **使いやすさと導入の容易さ**：**△**(導入と設定に専門知識が必要) |
| --- |

 

公式ページ：[https://www.oracle.com/jp/integration/goldengate/](https://www.oracle.com/jp/integration/goldengate/)

 

### Integrate.io

ETL、リバースETL、CDC機能を備えたデータ統合プラットフォームで、ノーコードでのデータパイプライン作成が可能です。

| **機能と特徴**：**〇**(多機能でノーコードのUIを提供) **対応データソース**：**◎**(多様なデータソースに対応) **使いやすさと導入の容易さ**：**◎**(ノーコードで初心者にも使いやすい) |
| --- |

 

公式ページ：[https://www.integrate.io/](https://www.integrate.io/)

 

### ツール比較まとめ

4つのCDCツールを3つの観点で比較したものが以下の表です。

 

|   | **機能と特徴** | **対応データソース** | **使いやすさと導入の容易さ** |
| --- | --- | --- | --- |
| **Debezium** | 〇 | 〇 | △ |
| **Fivetran** | ◎ | ◎ | ◎ |
| **Oracle GoldenGate** | ◎ | ◎ | △ |
| **Intergrate.io** | 〇 | ◎ | ◎ |

 

 

## まとめ

いかがでしたか？本記事では、CDC(Change Data Capture)について概要と3つの方式を中心に紹介しました。

データを更新する度に、全データを送信、処理を行うのはとても大変です。ぜひ今回紹介したCDCを活用し、効率よく作業を進めましょう！

 

[完全な記事を表示](https://knowledge.insight-lab.co.jp/bi/cdc)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "BI LAB編集室"
  },
  "dateModified" : "2025-04-09T09:11:56.031Z",
  "datePublished" : "2025-04-09T09:11:55Z",
  "headline" : "CDCとは？スムーズなデータ更新を目指して！",
  "image" : {
    "@type" : "ImageObject",
    "height" : 1178,
    "url" : "https://download.insight-lab.co.jp/hubfs/undraw_all-the-data_5lil%20%282%29.png",
    "width" : 1683
  },
  "mainEntityOfPage" : "https://knowledge.insight-lab.co.jp/bi/cdc",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "BI LAB データ活用研究所 - INSIGHT LAB"
  }
}
```