SalesCloud、ServiceCloud、FieldServiceにおける論理データモデルは必須で暗記する必要があります。
公式のデータモデル図は以下になります。(後段に参考のデータモデルも掲載していますが、オフィシャルはこちらとなります。)
かなり下にスクロールする必要あり。Data Model Gallery
https://architect.salesforce.com/diagrams#architecture-gallery
point
注意
先日の最終試験で、データモデル図が汚すぎ&一般的な書き方じゃなかったので、減点されました(本当にすみません。) これから受験されるかたは絶対にSalesforce公式おすすめの Lucidchartを使ってください!
私のこの記事はあまり参考にならないかもしれません…
データモデルをスライドにまとめる際に、凡例の記述が必須です。
標準オブジェクトなのか、カスタムオブジェクトなのか、線は参照なのか、主従なのか、大量データはどこか、識別します。(あと、私は時間がなくて端折ったんですけれど、本当はOWD(所有者)や共有設定(公開か非公開かなど)の記述が必要です。ほかの受験者のかたはみなさん書かれてました・・・)
また、大量データが存在する場合に、対処も口述する必要があります。
データモデルの記述について
まず、データモデルの定義の仕方ですが、目的や用途に応じてオブジェクトを定義します。
また、リレーションの性質として、権限が親に確実に同等なのか(いわゆる主従)、そうでないのか(参照)を記述する必要があります。
<Case1>
例えば、会社に従業員が複数名所属しています。そうすると以下のようなデータモデルになりますよね。
Salesforceには会社や従業員にマッチする取引先、取引先テーブルがありますので、データモデルは以下のように記述します。
<Case2>
例えば、トレーニングマスタがあって、だれがその受講をしたか管理したい場合、以下となります。
受講したトレーニングには、トレーニングと取引先責任者を紐づける中間テーブルです。(例:田中課長は10/23にTOEICトレーニングの受講が完了した。)
データ件数の数え方
もし、トレーニングが50個、従業員が50万人、平均5個受講している場合、受講したトレーニングは5個×50万で約250万となります。
100万件以上のデータを扱うため、大量データという判断になります。(私は今までの案件の経験から100万件以上データが入るとレポートやリストビューがタイムアウトしうるので、100万件を大量データの閾値としていますが、ここは人によって考え方が違います。ほかの受験者のかたは200万をバーにしているかたもいました。)
※ちなみに、一般的な案件でもそうだと思いますが、年間ではなく、一定期間システムが稼働したことを考慮し、5年間のランニングで100万件以上のデータを対象としていました。つまり毎年20万件増加していく場合はLDVの対象とします。
もし、トレーニングが見える人は、必ず受講したトレーニングが参照でき、かつ、トレーニング受講者が何件いたか数を積み上げたいケースは以下となります。(主従関係のリレーション)
大量データの対処(データ)
次に、LDV(大量データ)を特定した際に、その対処を伝えます。
・リストビューやレポートは大量データの場合、画面表示がタイムアウトする可能性があるので、スキニーテーブル(Salesforceサポートへ問合せがひつよう)やインデックスをはる対処を考えます。
・そもそもオブジェクトに投入されているデータが少なければガバナ制約に抵触しづらくなったり、タイムアウトの懸念が減るため、上記と合わせてデータパージ(削除)やアーカイブも検討します。その際に、どのようにパージやアーカイブをするか問われる可能性がありますので、回答を整理するようにしましょう。
例)ETLで定期的にSalesforceの履歴オブジェクトのデータを取得し、外部のストレージサービス(例えば安価で実績のあるAWSのS3)にデータを登録。そのあとSalesforceの履歴オブジェクトは削除する。
・もし、定義が変わりづらい単純な履歴要件であれば、BigObjectにデータを格納(画面で見たい場合、LWCでカスタム画面を構築)する手段もあるでしょう。(BigObjectはインデックスを変更するなどの際に、テーブルを作成しなおし、データの再投入が必要となりますので、よくテーブル定義が変わるようなデータの保管は向いていません。)
・仮にSalesforceに持ってくることのできない大量データをSalesforce上で参照したい場合、SalesforceConnectを活用するのも一案です。ただし1時間あたり2万回CallOutなどの制限が存在します。また、細やかなアクセス権限はできません。左記に抵触する可能性がある場合、カスタムで画面を作ることも検討が必要です。
<アクセス権限>SalesforceConnectの外部データソースは、Apexから取得でき、Where句で条件をかけられるのか?
・尚、海外の人では、Salesforceに履歴カスタムオブジェクトを用意し、ETLでAWSS3にアーカイブする際に、AWSS3へのリンクを履歴カスタムオブジェクトに書き込む、というかたもいました。そうすればアクセス権限も柔軟に対応できるかと思います。
以下も試験前に自分の中でシミュレーションすることをおすすめします。
・このデータは誰がどのように検索するのか?
・スキニーテーブルやインデックス、BigObjectの定義、制約
・SalesforceConncetは具体的にどこに何を設定するのか?
※ERPの請求データを、Salesforce上にSalesforceConnectを使って表示するケースがありますが、SAPのERPだと、すでにOdataに対応しており、ミドルウェアで変換せずに直接つなぐことができるケースがあります。古いERPだと、ミドルウェア(ESB)がODataプロバイダとして振る舞います。
大量データの対処(ファイル)
データだけでなくファイルストレージ(いわゆる見積書、アップロード画像など)についても、現状のキャパシティにはまるのか否か、はまらない場合は多少であれば追加ストレージの購入を検討、かなり外れるのであれば外部ストレージの購入/アーカイブを検討します。(私は、5年程度のファイルがキャパシティにはまりそうなら標準のSalesforceFileを使うことにしていました。)
具体例を挙げると、
・社員数が1,000人 ※内部
・利用しているSalesforceのEdition(いわゆるOrg・組織のグレード)はエンタープライズ向けの大規模システムのため、Unlimited(Performance) Edition
・ファイル数は、10万件のケースに10MBの問題商品画像がアップロードされる。(5年間)
キャパシティ=2,020GB=10GB(Unlimited組織のキャップ)+2GB×1,000人(Salesforceライセンスは2GB)
利用ストレージ(5年)=1,000GB=100,000×10MB
⇒明らかに キャパシティ<利用ストレージ のため、外部ストレージを検討します。
※コミュニティユーザに、ファイルストレージの容量はつきません。
※B, KB, MB, GB, TBくらいまでは単位の定義を覚えておきましょう。
※ファイルストレージのキャパシティ計算は必須、知識としてデータストレージやAPIコール数の上限の計算はできるようにしておきましょう。
ストレージ計算
https://help.salesforce.com/s/articleView?id=sf.overview_storage.htm&type=5
<ひっかけ>注意ポイントとして、外部ストレージにアーカイブする際に、画面を標準にするのかカスタムにするのか検討が必要です。
<必読>大量のデータを使用するリリースのベストプラクティス
https://developer.salesforce.com/docs/atlas.ja-jp.salesforce_large_data_volumes_bp.meta/salesforce_large_data_volumes_bp/ldv_deployments_introduction.htm
その他参考
・Data Model Gallery:かなり下にスクロールする必要あり。
https://architect.salesforce.com/diagrams#architecture-gallery
・私の過去のブログ
https://qiita.com/nori83/items/492132cb298e4cece5eb
<注意>今後受験されるかたはlucidchartを使ってください!!
SalesとServiceのデータモデル ※一部抜粋
FieldServiceのデータモデル ※一部抜粋