この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

親子データスキュー

暗黙的な共有は、Salesforce アプリケーションにおけるユーザのセキュリティを管理するタスクを単純化します。暗黙的な共有では、システム管理者がロール、グループ、および共有ルールを追加設定しなくても、最も一般的なデータアクセスのユースケースが処理されます。データ所有者スキューの場合と同様に、一部の親子設定によって大規模なデータの読み込みや更新の速度が遅くなったり、場合によっては単一レコードの処理にも時間がかかることがあります。

パフォーマンス低下の原因となる一般的な設定は、1 つの親取引先への大量の子レコード (10,000 件以上) の関連付けです。たとえば、マーケティングキャンペーンで生成されたりメーリングリストで購入されたりする何万にも及ぶ取引先責任者が、正式な法人取引先と関連付けられていないことがあります。関連する取引先が取引先責任者に必要な場合、システム管理者はどのように対応すべきでしょうか。実際のビジネス値とリレーションを決定できるまで、未割り当てのこれらの取引先責任者をすべて 1 つのダミーの取引先にまとめてしまうのは便利な場合があります。

この方法は妥当に見えますが、このような親子データスキューは、暗黙的な共有を管理するうえでパフォーマンスに関する重大な問題の原因となります。

問題 #1: 偏った取引先に属す子レコードへのアクセス権の消失

未割り当ての 300,000 件の取引先責任者が、すべて同じ取引先に存在するとします。これらの取引先責任者のいずれか 1 つにアクセスできるユーザは、取引先共有テーブルに含まれアクセスできる親取引先も暗黙的に共有します。ユーザが取引先責任者にアクセスできなくなると、どうなるのでしょうか。

取引先へのユーザの共有を削除するどうかを判断するには、Salesforce で他の 299,999 件の取引先責任者をすべてスキャンして、ユーザがそれらの取引先責任者にもアクセスできないことを確認する必要があります。このように著しく偏った取引先で大量の表示変更を Salesforce で処理するのは、非常に不経済な運用です。

問題 #2: 偏った親取引先へのアクセス権���消失

上記の例とは反対の、ユーザに親取引先へのアクセス権があるため、300,000 件すべての取引先責任者にアクセスできるという場合を考えてみましょう。ユーザが取引先にアクセスできなくなると、どうなるのでしょうか。

この場合は、すべての子レコードにもアクセスできなくなるため、それほど問題にはなりません。Salesforce ではそのリストをすばやくクエリできますが、子レコードが大量に存在すると、すべての子オブジェクトに対して関係する行を共有テーブルから削除するのに長時間かかることがあります。

取引先で著しいデータスキューを含む設定を行うと、テリトリー管理で大規模な共有の変更や販売割り当ての再配置を行ったりするときに問題が生じることもあります。たとえば、取引先が共有ルールの共有元グループの一部であり、システム管理者が取引先で共有の再適用を行う場合、その 1 つの取引先に対して子エンティティのアクセスの調整に要する作業のため、再適用に長時間かかり、極端な場合には操作に失敗する可能性もあります。テリトリーの再配置プロセスで、偏った取引先に対する割り当てを評価しようとするときにも、同様の問題が生じることがあります。