[Dataverse] xMultiple メッセージ (プレビュー) について
皆様は Dataverse あるいは Dynamics 365 CE における xMultiple のメッセージについて既にご存知でしょうか?
簡単に言ってしまうと、複数レコードを作成/更新する際に利用できる、新しいメッセージのことで、
従来のバッチリクエストよりも遥かに効率的に(=高速に)実行できる SDK メッセージ / Web API アクションのことです。
従来は、個別の Create/Update リクエストを、SDK 経由なら ExecuteMultiple で、Web API ならバッチリクエストでまとめて実行することでバンドル化していたと思います。しかし、これはただ単に複数のリクエストを一つにまとめているだけであり、ネットワークレイテンシの影響を抑える効果はあるものの、Dataverse 内での実行は個別に行われるため、その意味でそこまで差は出ませんでした。
しかし、xMultiple では Dataverse 内での実行も一括でバンドル化して行うことにより、優れたパフォーマンスを実現できます。
概要
xMultiple は、大きく分けて 2 つのプロセスを複数レコード一括で実行することで、効率化に大きく寄与します。
- プラグインを含む実行パイプライン (実行パイプラインの解説はこちらを参照 [英語])
- データベースへの書き込み
1 の実行パイプラインにおいて xMultiple の恩恵をフルに受けるためには、カスタムのプラグインを xMultiple 対応させることが必要です。
カスタムで登録したプラグインがあり xMultiple に対応していない場合、2 のデータベースへの書き込みのみ一括で処理されるため、パフォーマンス向上も限定的になります。
プラグインを対応させるには、以下のドキュメントを参照してください。
(※ただしこの投稿時点では、翻訳精度があまり高くなく、英語版を見るか、英語版を BingChat / ChatGPT や DeepL などで翻訳しながら見た方がいいかもしれません)
採用に向けたアクション
まずは、レコードを一括して作成/更新する必要があるシナリオや、大量のレコードを作成/更新する際のパフォーマンスが重要なユースケースを特定してください。
その上で、xMultiple を呼び出す側、呼び出される側の対応がそれぞれ必要です。
呼び出す側としては、
- それがデータ移行かデータ統合 (連携) か
- どんな仕組みを用いているのかの特定 (SDK? Web API? 独自コード? サードパーティ製品?)
- 呼び出す側の xMultiple 対応が可能かどうかの検討
- 部分的にエラーとなった場合の挙動の確認と、それに応じたエラーハンドリングの実装
呼び出される側としては
個別プロジェクトだけでなく、自社にて製品として Dataverse / Dynamics 365 CE 対応のツールやサービス、コネクタ等を開発している場合には、そちらも xMultiple への対応をご検討ください。
制限事項
9/20 現在、以下の制限があります。
サードパーティ製品の対応など
既に xMultiple をサポートするサードパーティ製品が現れてきています。例えばデータ移行や SSIS 統合 (データ連携) で利用される KingswaySoft は Version 23.2 のリリースにて xMultiple をサポートしています。
New: We added support for the recently introduced xMultiple messages (CreateMultiple, UpdateMultiple, DeleteMultiple). This feature is automatically enabled when it is supported by the destination entity while the batch size is greater than 20.