活動データ モデルとストレージ
メール、電話、予定などの活動テーブル (以前はエンティティ) は、通常は 1 つのデータベース テーブルに格納される標準テーブルと比較して、より洗練されたデータ モデルによって Microsoft Dataverse データベースに格納されます。 この記事では、活動データ モデルと、それがストレージ容量に与える影響について説明します。 アクティビティの使用方法の詳細については、「 アクティビティ テーブル」を参照してください。
データベース テーブルの基盤である活動
活動の行は、基盤になる複数のテーブルにわたって Dataverse データベースに保存されます。 それぞれの活動テーブルは、ベース テーブルが含む対応するデータ行 (ActivityPointerBase) と、特定の活動タイプごとの専用拡張テーブル (EmailBase、TaskBase、AppointmentBase など) を格納します。
ActivityPointerBase
このテーブルは、システムが含むそれぞれの活動のベース テーブルです。 メール、電話、予定、カスタム活動など、任意の活動を作成すると、このテーブルに対応する行が作成されます。 このテーブルは活動ごとに 1 つの行を含むため、通常、このテーブルが含む行は膨大です。
このテーブルは、件名、説明、所有者、関連、状態など、既定の活動列をすべて含みます。 この表の列の完全なリストについては、 activitypointer EntityTypeを参照してください。 この基本活動テーブルにはこれらの各列が含まれ、活動ごとに 1 つの行があるため、多くの場合、これはデータ容量を最も多く消費します。 説明の列は、メール活動に対するメール本文の格納に使用する列と同じです。 メール本文には大量のテキストが含まれることがあるため、大きいサイズのメールによって、このテーブルが消費するデータ容量が増加する可能性があります。
自分の活動や、すべての活動など、あるビューにアクセスすると、そのデータを ActivityPointerBase テーブルから取得し、複数の活動タイプにわたる活動を 1 つのビューで確認できます。
システムが含むすべての活動は、特定の活動スキーマ名を使用して取得でき、同様に activitypointer スキーマを使用して取得することもできます。この機能は異なる活動タイプの活動を複数取得する場合に便利です。
ActivityPartyBase
このテーブルは、それぞれの活動の関係者情報を含みます。 それぞれの活動関係者は、その活動に関連付けられた個人またはグループを表します。 例: 開催者 1 人、所有者 1 人、必須出席者 2 人、任意出席者 1 人、関連オブジェクト 1 つを持つ、予定活動を作成したとします。 このテーブルには、対応する 6 つの行が格納されます。 活動関係者に関する例をもう 1 つ挙げると、それは From、To、Cc 行のメール活動に存在するすべての人物です。
連絡先などの行が削除された場合、連絡先を参照する活動関係者の行は自動的に削除されません。 これは、元の参加者データを保持するための設計です。 メールなどの活動行を削除すると、その活動に関連付けられているすべての活動関係者の行が削除されます。
詳細: ActivityPartyテーブル および activityparty EntityType。
ActivityMimeAttachment
このテーブルは、添付ファイルを活動行に関連付けるためのデータを含みます。
詳細情報: activitymimeattachment EntityType
EmailSearchBase (内部で使用)
このテーブルはメール アドレスの解決に使用します。 これは内部でのみ使用し、メール アドレス形式の列に関連付けられた、システム内の各メール アドレスの行を含みます。
EmailHashBase (内部で使用)
このテーブルは スマート マッチング に使用され、システム内の各電子メール メッセージに対して生成されたハッシュが含まれます。
詳細情報: 電子メールメッセージのフィルタリングと相関関係を使用する および スマートマッチングを無効にするEmailHashBaseテーブルの作成
スキーマとストレージの違い
個別の活動テーブルに対して公開するスキーマと、その基盤であるストレージには違いがあります。 例: SDKからアクセス可能な 電子メール エンティティ スキーマ を参照すると、すべてのテーブル列が使用可能になり、さまざまな基礎テーブル (基本テーブル、拡張テーブル、アクティビティ パーティ テーブル) から表示されます。 ただし、これらの列のほとんどは基本テーブル (ActivityPointerBase) に格納され、カスタム列がある場合のみ EmailBase テーブルに格納されます。
よくあるご質問
ActivityPointerBase
ActivityPointerBase が非常に多くの行を含む理由は?
詳細については上記の基本テーブルの定義を参照してください。 システム内の活動ごとに 1 行。
ActivityPointerBase が大量のストレージを消費する理由は?
潜在的な原因の 1 つは、行を大量に含み、テーブル全体のサイズに影響を与えるためです。 もう 1 つの潜在的理由は、説明列が含むテキストの長さです。 これは、メール活動の本文や予定活動の説明など、あらゆる活動に使用する説明列と同じものです。
ActivityPointerBase テーブルの使用を削減する方法は?
ActivityPointerBase は、メール、電話、タスク、予定などの活動行をユーザーが作成する際に保存したデータを含みます。 ユーザーがより多くの活動を作成するほど、テーブルが大きくなります。 このテーブルには、ユーザーが保存したデータが含まれており、内部使用データは含まれていません。 不要になった過去の活動を削除することで、このテーブルが使用するスペースを削減できます。
ActivityPartyBase
ActivityPartyBase が含む行数が非常に多い理由は?
活動への参加ごとに行が 1 つ存在します。 このテーブルに多くの行を追加するのは簡単ですが、個々の行で使用されるスペースは最小限です。
その他の質問
活動拡張テーブルが大量のストレージを使用するのはなぜですか?
拡張テーブルは、タスクなどの特定の活動テーブルの基本活動テーブル (ActivityPointerBase) を拡張し、カスタム列のデータを格納するために使用します。 タスク テーブルは、データベースの ActivityPointerBase テーブルが含む既定属性のデータを格納します。 タスク テーブルにカスタム属性を追加すると、それらはデータベースの TaskBase テーブルに保存されます。 拡張テーブルは、特定の活動に対して定義されたカスタム属性がある場合にのみ行を持ちます。 大量のテキストを含むテキスト フィールドをカスタム活動属性として定義した場合は、ストレージの使用量が増加する可能性があります。 定義したカスタム属性とコンテンツを確認してください。
メールの本文 (説明) を保存する場所は?
メール本文は ActivityPointerBase テーブルの説明列に格納されます。 この属性は両方のスキーマから取得できます: メールと activitypointerbase。 ただし、このデータは複製されません。 必要に応じて 2 か所にただ表示されます。