Skip to main content

FlyDataについて

Integrate.ioのデータ転送サービスは、実は2つのプロダクトで構成されています。ここまで中心的に扱ってきたのはETLプロダクトのXplentyですが、それとは別にELTプロダクトのFlyDataも提供されています。
onpremise-part03-jp image 1
FlyDataは、MySQLなどのオペレーショナルDBからAmazon Redshiftのようなデータウェアハウスへ、ほぼリアルタイムでデータを同期することに特化したクラウド型データ統合サービスです。CDC(Change Data Capture)の仕組みを使い、データベース側の変更内容を短い遅延でDWHへ反映できる点が大きな特徴です。

FlyDataの特徴

  • CDCによるリアルタイム連携: DB側の変更をほぼ即座に検知して転送
  • セットアップが軽量: 最小限の設定でレプリケーションを開始できる
  • DWH連携に特化: データウェアハウスへの取り込みに最適化されたアーキテクチャ
onpremise-part03-jp image 2
onpremise-part03-jp image 3
onpremise-part03-jp image 4

概要:なぜ「循環型」なのか

近年のデータ活用では、データを集めるだけでなく、集めたデータを分析・加工し、その結果を再び業務システムに反映する循環的なデータフローが求められるようになっています。 この記事では、次の2つのプロダクトを組み合わせてその循環を実現する構成を紹介します。 この2つを組み合わせることで、収集 → 中央での分析・計算 → 結果の書き戻しという一連の循環パイプラインを構築できます。
onpremise-part03-jp image 5

アーキテクチャ全体像

onpremise-part03-jp image 6
各コンポーネントの役割は以下の通りです。

各ステップの役割

  • ステップ1:FlyDataによる収集(ELT)
    • CDCにより各運用DBの変更をリアルタイム〜準リアルタイムでSnowflakeに連携
    • 変換は行わず、まず生データをそのままDWHへ保存する(ELTの考え方の核)
    • 異なる種類の複数DBを1つのDWHに統合できる
  • ステップ2:Snowflake内での分析・計算
    • 蓄積した生データをもとに、View・ストアドプロシージャ・dbtなどで調整済みデータを作成
    • 例:在庫の調整数量、精算金額、集計済みのユーザースコアなど
  • ステップ3:Xplentyによる書き戻し(ETL)
    • XplentyのビジュアルパイプラインでSnowflake上の加工データを読み込み
    • 必要な変換(フィールドマッピング、型変換、フィルタ)を適用
    • Merge(Upsert)、Append、Truncate & Insertなどの方式で各運用DBへ書き戻す

ユースケース:ECプラットフォームの決済・在庫データ同期

背景

  • 日本・米国・韓国それぞれに個別の運用DBを持つECサービス
  • 各リージョンの決済データを中央で集計し、グローバルな決済調整額を算出したい
  • 算出した調整額を各リージョンのDBへ反映する必要がある

ステップ1:FlyDataで各リージョンDB → Snowflakeへ収集

onpremise-part03-jp image 7
onpremise-part03-jp image 8
onpremise-part03-jp image 9
  • 日本のMySQL → CDC → Snowflake: raw.jp_payments
  • 米国のPostgreSQL → CDC → Snowflake: raw.us_payments
  • 韓国のMySQL → CDC → Snowflake: raw.kr_payments
onpremise-part03-jp image 10
これらはSnowflake側でスキーマとして統合され、FlyData上のパイプライン設定によって継続的に更新されます。
onpremise-part03-jp image 11

ステップ2:Snowflakeでグローバル調整額を算出

onpremise-part03-jp image 12

ステップ3:Xplentyで各リージョンDBへ書き戻し

Xplentyパイプラインの構成例:
onpremise-part03-jp image 13
  • JP MySQL、US PostgreSQL、KR MySQLそれぞれに個別のパイプラインを用意するか、単一パイプライン内で分岐させる
  • SnowflakeでのView更新完了後にXplentyパイプラインが自動実行されるよう、依存関係をスケジューラ側で設定する

メリット・デメリット

メリット

デメリット

運用時の注意点

  1. データループの防止(最重要)
    • 書き戻すデータにはsource_systemis_adjustedupdated_byのような出所を示すメタカラムを付与する
    • FlyDataのCDCフィルタ、またはSnowflake側のViewロジックで、書き戻したデータを再収集対象から除外する
  2. 冪等性の担保
    • Xplentyの書き戻しパイプラインが再実行されても重複挿入が起きないよう、Merge(Upsert)モードと明確な主キーを設定する
  3. 実行順序の管理
    • Snowflake側の計算(View更新、dbt runなど)が完了してからXplentyパイプラインが動くよう、スケジュールや依存関係トリガーを設定する
    • Xplentyの Dependent Execution や Webhook Trigger の活用が有効
  4. 失敗時の部分ロールバック対策
    • 書き戻しの途中で一部のDBだけ更新され残りが失敗すると、データ不整合が生じる
    • Xplentyの Single Transaction Mode や Pre/Post-action SQL を使ってロールバック戦略を用意する
  5. 監視とアラート
    • FlyData・Xplenty双方に障害通知を設定し、どの区間で失敗してもすぐ気づけるようにする
    • Slack、PagerDuty、Emailなどのフックが有効
  6. 機密データの取り扱い
    • 個人情報や金融情報を含むデータを書き戻す場合は、XplentyのSelectやFilterコンポーネントで不要な機密項目を除外・マスキングする

まとめ

FlyData(ELT)とXplenty(ETL)を組み合わせた循環型のデータパイプラインは、中央集約型のデータ管理業務システムへのデータ反映を同時に実現できる構成です。 複数リージョンや複数サービスの運用DBを抱えつつ、中央で計算した結果を各システムに反映したいEC・金融・マルチリージョンSaaSのようなケースで特に有効に機能します。 一方で、リアルタイム性や厳密な一貫性が求められるトランザクション処理には向かないため、要件に応じてアーキテクチャを使い分けることが重要です。
最終更新日 2026年7月23日