アーキテクチャ


アーキテクチャ


概要

CData Sync を使えば、アプリケーション、リレーショナルデータベース、その他たくさんのデータソースから簡単に、データをデータウェアハウスやデータレイクに移動できます。業務用アプリケーションのエコシステムが成熟し、ビジネスではデータドリブンな意思決定がますます重要性を増しているため、データ管理について戦略を立てておくことは重要です。Sync はどんなデータストアにもデータを簡単かつ効率的に移動できるよう設計されています。

アーキテクチャ

コンセプト

  • 接続:データパイプラインを作成するには、まずソースと同期先の接続を設定します。Sync にはデータの移動を簡単にする人気のソースと同期先が事前にインストールされている上、CData Web サイトから他の多くのコネクタを追加でダウンロードできます。接続の作成に関する詳細は、接続の作成ドキュメントを参照してください。コネクタや利用可能なソースと同期先の一覧に関する詳細は、コネクタドキュメントを参照してください。
  • ジョブ:Sync のジョブは、ソース接続、同期先接続、およびさまざまなテーブルのデータフローを表す一連のタスクを含む実行単位です。ジョブ内のすべてのタスクは逐次実行が可能で、データフローを自在に構成できます。管理コンソールの[ジョブ]ページには、Sync アプリ内のすべての設定済みジョブが一覧化されています。このページで、アプリケーションへの新しいジョブの追加と既存のジョブの管理・モニタが簡単にできます。詳細はジョブドキュメントを参照してください。
  • タスク:タスクはソースから同期先テーブルへのデータフローを制御します。詳細はタスクドキュメントを参照してください。

最初のロード

初めてジョブを実行する際には、Sync はソースの履歴にあるこれまでのデータをすべて処理します。この処理は大量の情報を含む場合があるので、Sync はさまざまな戦略を使って効率、性能、整合性を最大化します。また、特定のデータセットに最適化した同期方法を使うために、ユーザー制御可能なたくさんのオプションを提供します。

Sync では最初のロード時に次のステップを実行します。

  • レプリケート開始日: Sync の最初のロードはソースの最小の日付からはじまるため、Sync はソースの最も古い利用可能なレコードからデータの移動を開始します。API によってはエンティティの最小の日付を提供していない場合もあります。最小日付が利用できない場合、[レプリケート開始日]を指定することで手動で設定できます。

    Note:手動で最小日付を設定するには、ジョブの設定ページに移動して、[テーブル]タブをクリックしてから特定のテーブルをクリックして、[タスク設定]モーダルを表示してください。[タスク設定]モーダルで画面の[Advanced]タブをクリックすると、レプリケート開始日オプションで最小の開始日(最小日付)を設定してレプリケートを開始できます。使用できる日付フォーマットは、yyyy-MM-dd またはyyyy-MM-dd HH:mm:ss です。

  • レプリケート間隔:最小日付が見つかると、Sync は残りのデータを最後に達するまで定義済みの間隔に基づいて移動します。前の例で説明すると、最小日付からユーザーが定義した6ヶ月間隔に達するまでデータを処理した後も、Sync は最後のデータに達するまで同じ間隔でデータを移動します。

    • レプリケート間隔:[レプリケート間隔の単位]と対になって、データを取得する際にデータを分割する時間間隔を設定します。この間隔は、失敗した場合やレプリケーションが中断した場合に、次の試行時に途中から再開できるよう、更新をバッチ化するために使用されます。Sync はデフォルトで180日を使用しますが、データ量や、データ間でどの程度時間間隔が離れているかに応じて大小を調整できます。
    • レプリケート間隔の単位:[レプリケート間隔]と対になって、データを取得する際にデータを分割する時間間隔を設定します。使用できる値は、’minutes、hours、days、weeks、months、years’ です。

差分ロード

最初のロード後は、Sync は差分ロードを使ってデータを移動します。差分ロードには前回の実行以降追加、または変更されたデータだけが含まれます。これによって、大規模データセットを扱う際のワークロードが減少します。多くのクラウドシステムがAPI を使用しており、API からデータ全体をデータウェアハウスに取り込むには時間がかかることもしばしばです。さらに多くのAPI は一日のクオータを設定しており、取得したいすべてのデータを一日で取得できない可能性があります。15分や1時間毎にはさらに少ないデータしか取得できません。差分毎にデータを移動することで、遅いAPI や一日のクオータを扱う際に、Sync はユーザーに大きな柔軟性を確保します。

Sync では主に差分チェックカラムと変更の追跡という2つの手法を用いて、更新されたデータだけを移動します。差分更新の詳細は、機能ドキュメントを参照してください。

データの整合性

どんなデータ連携の戦略を立てる上でも、元のソースと同期先の間でデータが一貫していることを保証するのは重要です。データパイプラインでエラーが起きたり、ジョブが中断した場合、データパイプラインが中断した箇所から処理を再開できるようにする必要があります。これによって、更新の間隔やエラーによってデータが消失することを防ぎます。Sync はこの処理を、複雑なデータロード用スクリプトや処理の設定なしで自動的に実行します。

Sync は同期間隔に従ってデータを処理します。つまり、データをすべて一度に移動するのではなく、データを扱いやすい間隔(またはデータの「チャンク」)に分割して、一度に1間隔ずつ処理します。これによって性能が大幅に向上し、エラーの際にもデータの整合性が保たれます。Sync はソースと同期先のテーブルを照合し、エラーが起きた場合には現在の間隔のデータをすべて捨ててその時点から処理を再開します。

例えば、大規模な同期ジョブの完了間近にエラーが起きたとしましょう。その場合ジョブ全体の最初から開始するのではなく、Sync は最後に処理が完了した間隔から再開するので、時間とリソースを節約できます。

Note:API によっては、ある期間にアクセスできる回数を制限している場合があります。こうした制限でエラーが発生する場合があります。こうしたエラーが起きると、Sync は未完了の同期レコードを捨ててその時点から次のスケジュール済みジョブを再開します。ユーザーは間隔を設定して、間隔毎にどの程度のデータを取得するか制御し、エラーが発生した際に取得するデータ量を制限できます。

性能

ビジネスチームが素早くデータにアクセスできるようにする上で、性能は欠かせません。応答が遅いAPI を持つソースから大量のデータを移動する際に、Sync はさまざまな機能を使ってデータの整合性を改善し、ジョブ性能を最大化します。

業界最高品質のコネクタ

アナリティクスとコグニティブコンピューティングによる需要増加のため、アプリケーションはかつては考えられなかったような大量のデータセットを取得、処理しなければなりません。Sync の業界最高品質のコネクタは他のSaaS、NoSQL、およびビッグデータ連携ソリューションの2倍以上高速で、ビッグデータ時代に最高の効率で操作できるスピードと信頼性をユーザーに保証します。

一時テーブルへのバッチ挿入

Sync バッチ挿入を使って複数の行を同時に挿入します。Sync は1行ずつ挿入せずに1つのステートメントでデータベースに複数行をバッチで挿入します。それによって、ネットワークを効率化してジョブを処理するスピードを向上します。

一時テーブルから同期先テーブルへのマージ

Sync はデータをソースから同期先に移す際に、データをまず一時テーブルに挿入して、その後MERGE アクションを使用して同期先テーブルに追加します。これによって性能が向上し、Sync がジョブ実行中に本番テーブルをロックすることがないようにします。エラーの際には、本番テーブルを破壊することがないようSync は一時テーブルを削除することもできます。

一時テーブルを使用することで、データを移動する際のSync の性能が大幅に向上します。行毎にターゲットテーブルを読み込む必要があるUPSERT とは違い、MERGE は1回のトランザクション内で実行され、ターゲットを一度読み込むだけでどの行を更新し、どの行に挿入するかを決定できます。

並列処理

ジョブが並列処理を行うように設定することもでき、それによって同じジョブに複数のワーカースレッドを割り当てます。複数ワーカーを活用することで、Sync はワークロードを複数の処理に分割でき、複数のテーブルを同時に移動することができます。並列処理によってSync はより素早くより多くのデータを一度に移動することができるため、効率が大幅に向上します。Sync ユーザーはジョブ毎にいくつのワーカーでも割り当てることができます。

複数の並行リーダー

ソース接続が許可する場合には、Sync はソースAPI からデータを読み込むために複数の並行リーダーを作成します。これによってSync は同じテーブルにデータを並行して読み込むことができるので、データパイプライン上でデータを移動する際の性能をさらに向上できます。