どんな組織でも、テクノロジーの最先端を維持し、データに基づいたスマートな意思決定を行いたいと考えていますが、Microsoft SQL Server のデータ収集機能で、貴重な情報の取得や、その情報を分析のためにリレーショナルデータベースやデータウェアハウスに保存することができるようになるでしょう。

ただ、企業情報とデータ統合を新鮮で適切なものに保つことは、非常に時間のかかるプロセスです。そこで、CDC(変更データキャプチャ)がそれに大きな変化をもたらしてくれます。

CDC(変更データキャプチャ)は、確実に企業データを常に最新の状態に保ち、企業のデータワークフローを飛躍的に速く効率的にします。では、CDC とは具体的にどのようなもので、どのような種類があるのでしょうか。また、CDC はSQL Server でどのように実装され、ETL とどのように統合されるのでしょうか?このような疑問に対する答えを見つけるべく、それを本記事で見ていきましょう。

以下は、本記事における5つの主なポイントです:

  • CDC は SQL Server の機能で、SQL Server テーブルで実行された挿入、更新、削除操作をキャプチャし、別のテーブルに書き出すことができる。これは、監査、レプリケーション、データウェアハウスなどのさまざまな目的に有用になり得る。
  • SQL Server テーブルで CDC を有効にするには、まずデータベースレベルで有効にし、次に特定のテーブルで有効にする必要がある。一度有効にすると、SQL Server は自動的に別のテーブルを作成して変更を保存してくれる。
  • CDC は「変更テーブル」と呼ばれる特種テーブルを使って、取り込まれた変更を保存する。変更テーブルの構造は元のテーブルと似ているが、変更の種類、変更時刻、変更の原因となったトランザクションを追跡するための列が追加されている。
  • SQL Server からの CDC 関数を使って、変更テーブルを照会し、取り込まれた変更を取得でき、その関数を使うと、時間範囲、トランザクション ID、およびその他の条件で変更をフィルタリングできる。
  • CDC を実装する際には、性能とスケーラビリティ(拡張性)を考慮することが重要である。CDC は SQL Server のインスタンスにかなりの量の追加のワークロードを発生させる可能性があるため、増加した負荷を処理するためのデータベース設計とハードウェア・インフラストラクチャの最適化が必要になる場合がある。

CDC は SQL Server の強力な機能で、データベースに対する変更を追跡することができます。本記事では、データベースとテーブル レベルでの CDC の有効化から、変更テーブルと CDC 関数の操作まで、SQL Server に CDC を実装するプロセスを見ていきます。また、SQL Server の環境に CDC を実装するための重要な性能上の考慮事項とベスト・プラクティスについてもお話します。CDC が初めての方にも、既存の実装を最適化したい方にも、本記事をお勧めします。

目次

CDC(変更データキャプチャ)とは

CDC(変更データキャプチャ)とは、ソーステーブル と ソースデータベース の変更を特定し、そのデータベースの変更を転送する一連のソフトウェアプロセスとテクニックのことです。企業が CDC を使う場合、通常はリアルタイムで変更を検出することができ、変更された項目は、大抵はデータ複製を通じて特定のターゲットロケーションに移動します。そして企業はその後、その更新されたデータを BI(ビジネス・インテリジェンス)やデータ分析ワークフローに使用できます。

ビジネスは「時は金なり」と言います。CDC はリアルタイムで動作するため、より効率的にデータを扱いたい企業にとって理想的なソリューションであり、データを SQL Server で集めた後に、CDC でその情報をデータウェアハウス、データレイク、または他のデータベースにリアルタイムまたはほぼリアルタイムで移動することができます。CDC が提供するデータ移動の効率化は、組織にとって非常に有益なのです。

関連記事Change Data Capture とは?

CDC の種類

企業は主に「ログベース」と「トリガーベース」2つのタイプの CDC を使うことができます。

ログベースの CDC

ログベースの CDC では、CDC ソリューションはデータベースのトランザクション ログを調査し、そのプロセスの間、CDC ソリューションはファイルを読み取ってソースシステムの変更を明らかにします。そしてこのメタデータ情報はCDC変更テーブルに格納され、その後は、そのソース変更のデータのレプリケーションをターゲットデータストアに実行します。

以下は、ログベースCDC の長所です:

  • 変更漏れのない高い信頼性
  • 本番データベースシステムへの影響が最小限
  • 本番データベースのスキーマを変更する必要がなく、SQL Server CDCテーブルを追加使用する必要もない

一方、以下はログベースの CDC の短所です:

  • ログベースの CDC に対応するデータベースでのみ稼働する
  • かなり複雑

トリガーベースの CDC

トリガーベースの CDC では、CDC ソリューションはデータベースのトリガーを使い、このプロセスでは、別のイベントが発生すると CDC ソリューションが実行されます。このデータベースのトリガーは、変更を抽出することによるオーバーヘッドを減少させることができますが、既存のデータベースが更新されるたびに一定の実行時間を必要とするため、ソースシステムにオーバーヘッドが追加されることにもなります。

以下は、トリガーベースの CDC の長所です:

  • 実装が簡単
  • 変更がサッとできる
  • シャドウテーブルは全トランザクションの詳細なログを提供できる
  • 一部のデータベースでは SQL API で直接サポートされる

一方、以下はトリガーベースの CDC の短所です:

  • トリガーのオーバーロードが発生する可能性がある
  • 特定の操作の間、トリガーが無効になる場合がある
  • ユーザーが行を挿入、更新、または削除するたびにデータベースへの複数の書き込みを必要とするため、データベースの全体的な性能が大幅に下がる

CDC と ETL

CDC の本当の利点は、企業が不必要なデータ作業に集中しなくて済むことです。 MS SQL CDC を実装することで、同社のシステムは SQL Server データベース全体ではなく、レコードの新しい更新のみに集中できるようになりますからね。

また、CDC の利点は、ETL にも有用です。 最もよく使われ、主流となっているデータ統合のタイプは、ETL (抽出、変換、格納) ですが、ETL では、プロセスにより 1 つ以上のデータ ソースから情報が抽出され、情報がクリーンアップされて必要に応じて変換されます。最後に、そのプロセスはその情報をデータウェアハウス、データレイクなどのデータベースタイプに配信します。

関連記事ETLとは?3つの機能を持つデータ活用のための重要な処理技術

従来の ETL では、変換ステップに時間がかかりますが、SQLの CDC とETLを組み合わせることで、従来の ETL システムを運用するのに比べて、企業の時間と労力が大幅に削減される可能性があります。CDC の SQL Server ソリューションで、データ転送の実行に必要な時間が改善され、ETL プロセス全体に必要なリソースを削減できるようになるのです。

関連記事ETL vs ELT: 5つの重要な違い

SQL Server における CDC の実装

CDC の種類と ETL との関係についてお話したところで、SQL Server に CDC を実装する方法について見ていきます。CDC は、SQL Server テーブルに適用されるアクティビティ、挿入、更新、および削除を記録します。つまり、組織はSQL Server のCDC 機能を使うことで、SQL Server のデータの変更を取得できるということです。

ただし、CDC SQL Server を有効にする前に、データシステムが特定の前提条件を満たしていないといけません。その前提条件には以下が含まれます:

  • ”sysadmin " 権限を持っていること
  • Web は CDC 機能に対応していないので、SQL Server Developer Edition、Enterprise Edition、Standard Edition のいずれかを実行していること
  • SQL Server エージェントが SQL Server インスタンス上で実行されていること

企業システムがこの前提条件を満たしたら、ユーザーは以下の手順で SQL Server の CDC を実装できます。

  1. [SQL Server Management Studio]を開き、データベースを作成する
  2. テーブルを作成する
  3. データベースで CDC を有効にする
  4. CDC を有効にする特定のテーブルを確定する
  5. テーブルに値を挿入する
  6. CDC が機能していることを確認する

SQL の CDC の技術的な実装の中身はどのようなものでしょうか?その答えは、少しややこしくて以下のような技術的なものになります:

  • dbo.cdc_jobs は Microsoft SQL Server のシステムテーブルで、「キャプチャ」と 「クリーンアップ」のジョブの CDC パラメータを追跡し、それには、データベースID、実行するジョブのタイプ、新しいデータをポーリングするまでの秒数などの設定が含まれる。

  • sys.sp_cdc_enable_db は指定されたデータベースで CDC を有効にするストアドプロシージャであり、sys.sp_cdc_enable_table は指定されたテーブルの CDC を有効にする。このようなプロシージャを実行するには、それぞれ "exec sys.sp_cdc_enable_db "と "exec sys.sp_cdc_enable_table "とタイプする。こういったコマンドは、例えば、source_name は CDC を有効にするソースのテーブル名で、role_name は変更データへのアクセスを制御するロールの名前というように、複数の引数を取る。

  • SQL Server で CDC を実装するには、DDL(データ定義言語)とDML(データ操作言語)の SQL コマンドについての詳しい知識も必要になる。

結局のところ、MS SQL CDC を導入することで、組織はデータ統合作業に費やす時間の削減、システムによるより効率的な情報処理、リアルタイムでのデータ変更ができるようになるのです。

CDC と SQL: Integrate.ioがお手伝いできること

ETL と SQL Server CDC のためのシンプルで効率的なソリューションをお探しでしたら、我々がお手伝いします。Integrate.io は、パワフルで豊富な機能がありながら、ユーザーに優しいクラウドベースの ETL(抽出、変換、格納)ソリューションです。また、Integrate.io プラットフォームのドラッグ&ドロップのインターフェースは、様々なソースとデスティネーションにまたがる自動データフローのためのデータパイプラインをサッと構築することができます。

Integrate.io のコード不要のデータ統合により、データの専門家か技術的バックグラウンドのないチームメンバーまで、誰もが豊富なデータパイプラインを構築できます。デベロッパーであろうとなかろうと、CDC と ETL ソリューションを使うのは、企業にとって有益です。