← メインに戻る
07

データ統合と相互運用性

Data Integration & Interoperability — DAMA-DMBOK Chapter 8

6%
データ統合と相互運用性とは

異なるシステム・組織・ユーザー間でデータを取得・移動・配布・変換・一致させるプロセス。

相互運用性(Interoperability) = 異なるシステムが相互に連携・通信できる能力
ETL vs ELT 比較
ETL(Extract → Transform → Load)
Source → [Extract] → [Transform] → [Load] → Target
変換をロード前に実施
バッチ処理 伝統的DWH オンプレミス向け
有利な条件: ターゲットに生データを置きたくない・複雑な変換ロジック
ELT(Extract → Load → Transform)
Source → [Extract] → [Load] → [Transform(in target)] → Target
変換をロード後にターゲット側で実施
クラウドDWH向け BigQuery Snowflake
有利な条件: テラバイト以上・スキーマ変更が多い・クラウドDWH使用
比較軸ETLELT
変換タイミングロード前ロード後
向き先伝統的DWH(オンプレミス)クラウドDWH(BigQuery, Snowflake)
セキュリティ生データがターゲットに残らない未変換データがクラウドに存在
ツール例Informatica, IBM DataStage, Talenddbt, Fivetran, Airbyte
CDC(Change Data Capture)— 変更データキャプチャ

ソースシステムのデータ変更(INSERT/UPDATE/DELETE)を検知してターゲットに伝播する手法。

ソースDB MySQL/PG/Oracle INSERT/UPDATE/DELETE 変更検知 CDC Layer Log-based Timestamp-based Trigger-based イベント発行 Kafka Message Queue Topic: db.tablename ターゲット DWH (Snowflake) 下流サービス
CDC手法仕組み効率性制約
ログベース DBトランザクションログ(binlog/WAL)を監視 最も効率的 ログへのアクセス権限必要
タイムスタンプ 最終更新日時(updated_at)で変更検知 シンプル DELETEを検知できない
トリガーベース DBトリガーで変更をキャプチャ シンプルに実装可 ソースDBに追加負荷
データ統合アーキテクチャパターン
🔗 Point-to-Point
システム間を直接接続。N×(N-1)/2 本の接続が必要。
スモールスタートには適するがスケール困難
接続数: 5システム = 10本、10システム = 45本
🔄 Hub-and-Spoke / ESB
中央ハブ(ESB)を経由して全システムが接続。
N本の接続のみ必要。SOAの中核
接続数: 5システム = 5本、10システム = 10本
🌐 データ仮想化
物理的にデータを移動させずに統合ビューを提供。リアルタイムアクセス可能。
例: Denodo, TIBCO
規制でデータ移動が制限される場合に有効
⚡ API統合
RESTful API / GraphQL / SOAP による接続。
マイクロサービスアーキテクチャに最適
API Gateway でルーティング・認証を一元管理
ESB vs API Gateway
🚌 ESB(Enterprise Service Bus)
  • システム間のメッセージ仲介
  • プロトコル変換・ルーティング
  • SOA(Service Oriented Architecture)の中核
  • MuleSoft, IBM MQ, TIBCO
重厚な企業システム統合向け
🔀 API Gateway
  • REST/GraphQL API の一元管理
  • 認証・認可・レート制限
  • マイクロサービス向け
  • Kong, AWS API Gateway, Nginx
クラウドネイティブ・マイクロサービス向け
メッセージングパターン
パターン説明
同期 リクエスト-レスポンス方式(即時応答) REST API
非同期 メッセージキューを使った非同期処理 RabbitMQ, SQS
Pub-Sub パブリッシャーがイベント発行、サブスクライバーが受信 Kafka
データ変換の種類
変換説明
マッピングソース項目→ターゲット項目の対応付け
変換(Conversion)データ型・フォーマット変換(日付形式等)
集計(Aggregation)合計・平均・カウントの計算
フィルタリング条件に合うデータのみ選択
結合(Join)複数ソースのデータを結合
エンリッチメント外部データによる補完

⚡ 試験直前ポイント

ETL vs ELT
ETLELT
変換タイミングロード前ロード後
向き先伝統的DWHBigQuery / Snowflake
CDC 3手法
手法特徴
ログベース最も効率的(トランザクションログ監視)
タイムスタンプシンプル。DELETEを検知できない
トリガーベースDBトリガーで変更キャプチャ
アーキテクチャの接続数
方式接続数(N=5)スケール
Point-to-PointN×(N-1)/2 = 10本困難
Hub-and-SpokeN = 5本容易
重要な概念
概念キーワード
データ仮想化データを移動させない統合
ESB仲介・プロトコル変換。SOA中核
Pub-SubKafkaが代表例(非同期)
スコア: 0 / 6 問正解
Q1.ETLとELTの最大の違いはどれか?
C) ETL=変換後にロード、ELT=ロード後にターゲット側で変換。クラウドDWH(BigQuery/Snowflake)はELTが一般的。
Q2.DBトランザクションログを監視してデータ変更を検知するCDC手法はどれか?
C) ログベースCDC — DBのトランザクションログ(MySQL binlog / PostgreSQL WAL等)を監視。最も効率的で、DELETEも検知可能。
Q3.物理的にデータを移動させずに、複数のソースを統合した仮想的なビューを提供する技術はどれか?
C) データ仮想化 — データを物理的にコピーせずに統合ビューを提供(Denodo等)。コンプライアンス上データ移動が制限される場合に有効。
Q4.ESB(Enterprise Service Bus)の主な役割はどれか?
B) ESBはシステム間の仲介役。SOA(Service Oriented Architecture)アーキテクチャの中核。
Q5.Point-to-Point 接続で N=5 のシステムがある場合、最大で何本の接続が必要か?
B) 10本 — N×(N-1)/2 = 5×4/2 = 10本。Hub-and-Spoke なら5本で済む。
Q6.イベントを発行するパブリッシャーと、興味のあるイベントを受信するサブスクライバーで構成されるメッセージングパターンはどれか?
C) Publish-Subscribe — Kafkaが代表例。送信者(Publisher)が受信者(Subscriber)を知らなくてよい疎結合なパターン。
Case 1: マイクロサービス環境でのデータ統合
背景: EC企業がモノリシックシステムをマイクロサービスに移行中(12サービス)。在庫サービス・注文サービス・配送サービスの在庫数が不一致。サービス間の直接DBアクセスによる密結合が問題。
❌ アンチパターン(問題のある実装)
注文サービス → [Orders DB] ↓(直接DB接続)← 密結合!独立デプロイ不可 在庫サービス → [Inventory DB] ↓(直接DB接続) 配送サービス → [Delivery DB]
✅ 改善案1: Choreography(コレオグラフィー)
注文サービス → [Event: OrderPlaced] → Kafka ↓ 在庫サービス ← [Event受信] → 在庫引当て ↓ 配送サービス ← [Event受信] → 配送準備
👍 疎結合・各サービスが独立
👎 複雑な業務フローのデバッグが困難
✅ 改善案2: Orchestration(オーケストレーション)
[注文オーケストレーター] → 在庫サービスへ「在庫確保」API呼出 → 成功 → 配送サービスへ「配送依頼」API呼出 → 失敗 → 補償トランザクション(在庫を戻す)
👍 業務フローが一か所で管理(可視性高い)
👎 オーケストレーターがSPOF(単一障害点)
採用した方針(ハイブリッド):
• シンプルな通知 → Choreography
• 複雑なトランザクション(在庫確保+決済+配送)→ Orchestration + Sagaパターン
Case 2: ETL vs ELTの実践的選択
Before(ETL方式)
オンプレ源泉DB ↓(Extract) ETLサーバー(8コア) ↓(Transform: 変換・正規化) DWH(on-prem)← 8時間かかる
問題: ETLサーバーがボトルネック
After(ELT方式)
オンプレ源泉DB ↓(Extract + Load: そのまま転送) BigQuery Staging Area ↓(Transform: BigQueryの並列処理) BigQuery DWH ← 30分に短縮!
効果: 変換処理が30分に短縮
条件推奨
ターゲット(DWH)の処理能力がソースより高いELT
クラウドDWH(BigQuery/Snowflake)を使用ELT
データ量がテラバイト以上ELT
ターゲットDBに生データを置きたくないETL
複雑な変換ロジックが必要ETL
Case 3: CDCの実装パターン
Debezium + Kafka の標準構成
MySQL(ソース) ↓ Debezium Connector(binlogを読み取ってKafkaに書き込み) [Kafka Topic: mydb.orders] ↓ Kafka Connect Sink Connector [Snowflake DWH] [下流マイクロサービス]
Debeziumのメッセージ構造
{ "op": "u", // u=update, c=create, d=delete "before": {"id": 1, "status": "pending"}, "after": {"id": 1, "status": "shipped"}, "source": { "table": "orders", "ts_ms": 1699000000000 } }
CDC手法メリットデメリット
ログベース追加負荷ゼロ。DELETE検知可ログアクセス権限必要
トリガーベースシンプルに実装可能DBに負荷。スキーマ変更時にトリガーも変更
タイムスタンプ最もシンプルDELETEを検知できない
Case 4: データ仮想化 vs 物理統合の選択基準
シナリオ: 本社のアナリストが5つの地域システム(別ベンダーのCRM)のデータを統合して見たい。データ移動は規制上制限がある。
[CRM Japan] [CRM US] [CRM EU] [CRM APAC] [CRM AU] ↓ ↓ ↓ ↓ ↓ [Data Virtualization Layer(Denodo等)] ↓(仮想統合ビュー) [アナリスト] ← SQLクエリ(あたかも1つのDBのように)
状況推奨
リアルタイム参照・少量データデータ仮想化
データ移動が規制で制限されるデータ仮想化
大量データの集計分析物理統合(ETL/ELT)
ソースシステムが非常に多いハイブリッド
Specialist試験:統合パターン選択問題
問題1
ERPシステムからDWHへ毎日在庫データを転送。在庫変更は1日5,000件。現在は毎晩100万件全件フルエクストラクトしているが非効率。最適な改善策は?
解答: Log-based CDCの導入。5,000件の変更のみキャプチャし転送データ量を99.5%削減。Timestamp-based CDCはDELETEが検知できないという制約がある。
問題2
10個のシステムがPoint-to-Pointで45の接続。管理困難。どのアーキテクチャに移行すべきか?
解答: Hub-and-Spoke(ESBまたはAPIゲートウェイ)。10本の接続に削減。Pub-Subパターンで疎結合な設計に。
問題3
ELTアプローチのデメリットとして最も重要なものはどれか?
解答: ターゲットDBに未変換・未クレンジングのデータが存在しデータ品質管理が遅れる。ターゲットのコンピューティングコスト(クエリ課金)が増加。生データがクラウドDWHに存在することへのセキュリティ考慮も必要。