エラスティック テーブルを作成、編集する
エラスティックテーブルは、Microsoft Dataverse が管理するテーブルです。 エラスティック テーブルには、標準テーブルで提供されるものと同じ使い慣れたユーザー エクスペリエンスと API が付属しています。 これらは標準テーブルと多くの側面やオプションを共有していますが、Azure Cosmos DB を活用した独自の機能が付属しています。
標準テーブルと同様に、エラスティック テーブルも Dataverse データベース容量の使用に含まれます。
エラスティック テーブルについて学習するには、このビデオをご覧ください。
Dataverse エラスティック テーブルを検討するのはどのような場合ですか?
エラスティック テーブルは、大量のデータをリアルタイムで処理できるように設計されています。 エラスティック テーブルを使用すると、スケーラビリティ、遅延、パフォーマンスの問題を発生させることなく、大量のデータをインポート、保存、分析できます。
エラスティック テーブルには、柔軟なスキーマ、水平スケーリング、一定期間後のデータの自動削除などの独自の機能があります。
エラスティック テーブルは、1 時間ごとに数千万行を取り込めるように自動的にスケーリングします。 バックグラウンド プロセスでは、IoT 信号を照合し、メンテナンス要件を予測し、技術者のスケジュールを事前に設定できます。
Contoso が数百万の既存顧客を持つ小売業者であるシナリオを例に考えてみましょう。 Contoso は大規模な顧客データベースを保有しており、顧客を維持しながら売上の増加を目指しています。 以前の顧客履歴に基づいて、顧客と製品を対象としたさまざまなクーポンを用意した、24 時間のフラッシュ セール イベントの開催を検討しています。 このフラッシュ セール キャンペーンごとに必要となるクーポンの数が 1 億以上になると見積もっています。 マーケティング部門は、さまざまな顧客セグメントをターゲットとした複数の 24 時間キャンペーンを実行する計画を立てています。
Contoso のマーケティング アプリケーションの要件は、数時間以内に最大 1 億枚以上のクーポンの詳細を取り込み、1 時間あたり数百万枚のクーポンを読み取り、顧客にクーポンを送信できることです。
エラスティック テーブルは、この高スループット シナリオに合わせて自動的にスケーリングされます。
たとえば、上記のシナリオでは、数百万レコードを持つ Coupon というエラスティック テーブルは、Contact( 顧客情報) や Offer (カスタム標準テーブル) などの Dataverse 標準テーブルと関連付けることができます。 エラスティック テーブルは標準テーブルから分離されているため、マーケティング アプリケーション全体のパフォーマンスに悪影響が及ぶことはありません。 さらに、エラスティック テーブルによる存続時間機能 (このシナリオでは クーポン ) により、一定期間後にデータを自動的に削除し、ストレージ容量を確実に最適化できます。
次の場合にエラスティック テーブルを使用します:
- データが非構造化または半構造化されているか、あるいはデータ モデルが常に変化している可能性があります。
- 自動水平スケーリングが必要です。
- 大量の読み取りと書き込みリクエストを処理する必要があります。
次の場合に標準テーブルを使用します:
- アプリケーションには強固な一貫性が必要です。
- アプリケーションにはリレーショナル モデリングが必要で、テーブル間およびプラグインの実行段階でのトランザクション機能が必要です。
- アプリケーションには複雑な結合が必要です。
テーブルの選択は、アプリケーションの特定のニーズに基づいて行う必要があります。 両方のタイプのテーブルの組み合わせが適切かもしれません。
水平方向のスケーリングとパフォーマンス
ビジネス データが増大するにつれて、エラスティック テーブルは、アプリケーションのワークロードに基づいて、ストレージ サイズとスループット (特定の期間内に作成、更新、削除されるレコードの数など) に基づいて無制限の自動スケーラビリティを提供します。
ビジネス シナリオが非常に大量のデータ書き込みを必要とする場合、アプリケーション メーカーは CreateMultiple
、UpdateMultiple
、DeleteMultiple
などの Dataverse の複数リクエスト API を利用することで、Dataverse の帯域幅調整制限内でより多くのスループットを達成できます。 詳細: 開発者ガイド: 一括操作メッセージ と 一括操作のパフォーマンスの最適化
データの自動削除
Time to Live (TTL) ポリシーにより、リソースを最適化しリスクを軽減しながら、常に最新かつ正確な情報を使用して作業できるようになります。 TTL ライブ値はレコードに秒単位で設定され、レコードが最後に変更された時点からの差分として解釈されます。
JSON 列を使用した柔軟なスキーマ
エラスティック テーブルは、定義済みのスキーマや移行を必要とせず、さまざまな構造のデータを保存し、クエリできます。 インポートされたデータを固定スキーマにマップするカスタム コードを作成する必要はありません。 詳細: 開発者ガイド: エラスティック テーブルの JSON 列をクエリする エラスティック テーブルを使用すると、事前定義されたスキーマや移行を必要とせずに、さまざまな構造でデータを保存したりクエリしたりできます。 インポートされたデータを固定スキーマにマップするカスタム コードを作成する必要はありません。 詳細: 開発者ガイド: エラスティック テーブルの JSON 列をクエリする
エラスティック テーブルを使用する際の考慮事項
エラスティック テーブルは大量のリクエストを大規模に処理するのに最適ですが、その利点にはいくつかのトレードオフがあり、次の点に留意する必要があります:
- エラスティック テーブルは複数レコード トランザクションに対応していません。 つまり、1 つのリクエスト実行の一部として起こる複数の書き込み操作は、相互にトランザクションではないことを意味します。 たとえば、エラスティック テーブルの
Create message
に対してPostOperation
ステージで登録した同期型プラグイン ステップがある場合、プラグインにエラーが発生しても、Dataverse. で作成したレコードをロールバックすることはありません。 プリプラグインの検証はメインステージの前に実行されるため、期待どおりに動作します。 - エラスティック テーブルは、論理セッション内でのみ強い整合性をサポートします。 セッション コンテキストの外では、行への変更がすぐに表示されない場合があります。 詳細情報: 開発者ガイド: 一貫性のレベル
- エラスティック テーブルは、API を使用してビューや高度な検索、一般的なクエリを作成する際に、関連するテーブルのフィルターをサポートしません。 関連テーブル列で頻繁にフィルター処理する必要がある場合は、メイン テーブル自体にフィルター処理する必要がある関連テーブルの列を非正規化することをお勧めします。 顧客と住所という 2 つのエラスティック テーブルを持つ小売業者の例を考えてみましょう。 一つの顧客に複数の住所がある。 住所テーブルの都市値がニューヨークである顧客テーブルから、すべての顧客のクエリ結果を返したいとします。 この例では、customer テーブルをクエリするときに、関連する address テーブルの city 列にフィルターを適用します。 エラスティック テーブルには対応していません。 これを実現する 1 つの方法は、顧客テーブルの city 列を非正規化し、すべての顧客の city の値が顧客テーブル自体に存在するようにすることです。
エラスティック テーブル機能のサポート
- API の複数操作 (高スループット)、一括削除、プラグインからのリクエストなど、作成、取得、更新、削除 (CRUD) 操作。
- リレーションシップ:
- 一対多
- N テーブルが標準テーブルの場合の多対一
- 所有権の記録、変更追跡、監査、モバイル オフライン、Dataverse 検索。
- ファイルタイプ属性を持つファイル列
セキュリティ機能対応
エラスティック テーブルは、Dataverse のセキュリティ モデルを遵守しています。
エラスティック テーブルを作成するときに、次を設定できます:
- ユーザーまたは組織のいずれかが所有する
- フィールド レベルのセキュリティ
エラスティック テーブルでは現在サポートされていない機能
現在、エラスティック テーブルでサポートされていないテーブル機能:
- ビジネス ルール
- グラフ
- ビジネス プロセス フロー
- Power BI 用 Dataverse コネクタ×1
- 標準的なテーブルに対する多対多 (N:N) の関連付け
- 代替キー
- 重複データ検出
- 計算列とロールアップ列
- 通貨の列
- クエリで列を比較する
- テーブルを有効にする
- 複合インデックス
- カスケード操作: 削除、再親化、割り当て、共有、共有解除
- 検索列での並び順
- クエリの集計 :
attribute2
の値で orderby する際にattribute1
の値を区別する- 複数の個別がある場合のページ割り
- 複数の注文とは区別されます
- 順番に並べる、フループ化
- リンク エンティティでグループ化 (左外部結合)
- ユーザー所有のテーブルで区別する
- テーブル接続
- アクセス チーム
- キュー
- 添付
列データ型は現在、エラスティック テーブルでは使用できません:
- 通貨型
- 式
- 「なし」以外の整数形式 (期間、言語コード、タイムゾーン)
- 顧客オプションに基づいた検索
エラスティック テーブルの作成
エラスティック テーブルは、Dataverse の他の新規テーブルと同じように作成します。
- Power Apps にサインインし、左のナビゲーションペインで テーブル を選択します。 項目がサイド パネル ウィンドウに表示されない場合は、…さらに表示 を選択して、目的の項目を選択します。
- コマンド バーで、新規テーブル > 高度なプロパティの設定 を選択します。
- 右側のプロパティ ペインで、表示名 と 複数形の名前 を入力します。
- 詳細オプション を展開し、 テーブルタイプ として 柔軟を選択します。
- 必要なプロパティを選択して、保存 を選択します。
Time to Live 列は、エラスティック テーブルに対して自動的に作成されます。 必要に応じて、期間の値を秒単位で追加できます。 データは、指定された期間が経過すると自動的に削除されます。
テーブルに関する詳細情報: 詳細オプション
既知の問題
- 存続期間 (TTL) が行で使用されている場合、TTL の有効期限が切れると、その行はエラスティック テーブルから削除されます。 TTL の有効期限が切れる前に Azure Synapse Link for Dataverse を使用してデータレイクに同期すれことで、データレイクから削除されません。
- 更新はバックアップされないため、ポイントインタイム復元は「更新された」レコードを復元しません。 作成および削除されたレコードのみが復元されます。
- エラスティック テーブルの特定の列が削除されるとき、データが含まれている場合、その列の値はテーブルの行から削除されません。 特定の列を削除する前に、すべての行からその列のデータを削除します。
大容量のエラスティック テーブルと Dataverse API スロットル制限の管理
一括操作メッセージを使います。 これにより、同じ Dataverse API の帯域幅調整制限で、10 倍のスループットを達成できます。 開発者は、以下のセクションにあるその他のリンクを参照できます。
開発者向け
エラスティック テーブルは、開発者が Dataverse API で使用する際に、標準的なテーブルとは異なる動作や機能を持ちます。 開発者向けの次の記事では、これらの違いについて説明しています:
- エラスティック テーブル
- コードを使用してエラスティック テーブルを作成する
- コードを使用してエラスティック テーブルを使用する
- エラスティック テーブルの JSON 列をクエリする
- 一括操作メッセージ (プレビュー)
- エラスティック テーブルのサンプル コード
- 並行要求を送信する
- サービス保護の API 制限