CData Sync でジョブの並列処理がサポートされました

by 杉本和也 | 2021年09月24日

f:id:sugimomoto:20210923154720p:plain

こんにちは。CData Software Japan リードエンジニアの杉本です。

今回はCData Sync の新機能として、ジョブの並列処理がサポートされたので、お伝えしたいと思います!

www.cdata.com

f:id:sugimomoto:20210923154542p:plain

概要

CData Sync では一つのジョブの中で複数のテーブルのレプリケーションを定義することができるようになっています。

f:id:sugimomoto:20210923154450p:plain

従来はこのジョブの中での処理はシリアルに一つ一つのテーブルがレプリケーションされるようになっており、1つ目のテーブルの処理が終わらない限り、次のテーブルの処理は進みませんでした。

f:id:sugimomoto:20210923154455p:plain

最新バージョンではジョブの設定において並列処理を有効化し、任意のワーカープール数を指定することで、パラレルにテーブルのレプリケーションが実行できるようになっています。

f:id:sugimomoto:20210923154505p:plain

これにより、一つ一つのテーブルの処理完了を待たずに、多くのレプリケーションを並列して処理できるようになりました。

f:id:sugimomoto:20210923154509p:plain

処理パフォーマンスを比較してみる

せっかくなので、シリアルとパラレルの処理でどのくらいパフォーマンスに変化がでるのか、検証してみました。

今回はSalesforceから5種類のテーブルを対象に、MySQLへレプリケーションしてみます。

f:id:sugimomoto:20210923154523p:plain

レプリケーションオプションでテーブルは一度削除するようにしているので、差分は意識せず、毎回同じレプリケーションが実行されます。

f:id:sugimomoto:20210923154528p:plain

まずは並列処理は加えずに、通常通り実行してみました。

f:id:sugimomoto:20210923154532p:plain

処理結果はログ上で確認できます。約5千レコードを実行するのに9秒かかりました。

f:id:sugimomoto:20210923154537p:plain

続いて並列処理を有効化し、ワーカープールに5を指定してみます。

f:id:sugimomoto:20210923154542p:plain

手動実行を開始すると、すぐ違いが見て取れます。

通常であれば一つ一つステータスが「Running」に移り変わっていくのですが、5つのテーブル全部が一気に「Running」状態になりました。

f:id:sugimomoto:20210923154548p:plain

ジョブの終了後、同じように処理結果を確認してみると、「5秒」とおよそ半分の結果になりました。

f:id:sugimomoto:20210923154554p:plain

今回はわかりやすい数のテーブルのレプリケーションでしたが、対象のテーブルが増えるほど効果を発揮するでしょう。

並列処理レプリケーションで注意したいこと

さて、この機能はとても便利なのですが、CData Sync で取得するデータソースがSaaS APIなどの場合は、対象のサービスのAPI制限に抵触する可能性があるので注意が必要です。

特に同時リクエスト制限が設けられているAPIは抵触してしまう可能性が高いでしょう。

例えば、Salesforce APIの場合は同時APIの要求数がDeveloper Edition組織もしくはトライアル組織の場合は「5」で、本番環境やSandbox環境の場合は「25」です。

developer.salesforce.com

f:id:sugimomoto:20210923154600p:plain

もしテーブル数が増大する場合は、スレッドプールの数を抑えるか、並列処理は有効化せず、シリアルかつ、必要に応じてジョブとジョブの実行間隔も開けながら、利用していただくのが良いものと思います。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。