はじめに
実際に使用したことはないものの、要件定義の段階で話に挙がったBig Objectについて、今回はまとめたいと思います。
Big Objectとは
Big Objectとは、Salesforce上で10億件以上のデータを保存、管理することができる機能のこと(通常のオブジェクトとは異なるストレージに保存されている)。
一般的なオブジェクトと同様に、①標準Big Object(項目監査履歴など)と②カスタムBig Objectに大別される。
Big Objectの使用用途
- 顧客の360度View
- 顧客に関するすべてのデータ。
- 監査と追跡
- ユーザのSalesforce利用状況の追跡。
- 履歴アーカイブ
- データの履歴管理。
ざっくり言うと、1つのオブジェクトに大量のレコードが作成されるような環境で、一定時間経過したレコードをアーカイブとして保存するような用途に適している。
Big Objectの制約事項
- 入力規則を使用することができない。
- データの品質を担保する場合は、Apexクラスなどを用いる必要がある。
- 項目変更履歴を使用することができない。
- リストビューで表示することができない。
- SalesforceのUI上に、レコード情報を表示することができないため、画面表示したい場合はVisualforceやLWCを使用する必要がある。
- Apexトリガを使用することができない
- Big Object の作成/更新/削除を起点としたトリガを実装することができない。
- プロセスビルダー、フローでBig Objectのデータを扱うことができない。
- レポート、ダッシュボードでBig Objectのデータを表示することができない。
カスタムBig Objectの作成手順
- 「設定」メニューの「Big Object」から新規作成ボタンをクリックし、オブジェクト名とAPI名を入力する。
- カスタム項目を作成する。
- 選択リスト、主従関係のリレーション項目、数式項目は作成することができない。
- Big Objectのサフィックスは「__b」になっていて、項目は「__c」となる。
- インデックスを作成する。
- インデックスとは、データベース内のテーブルの行を高速に検索するためのデータ構造のこと。
- インデックスに使用する項目は入力必須にする必要がある。
データの取得
Big ObjectへのアクセスにはSOQLクエリを使用する。1つは通常のSOQLで、もう1つは非同期SOQLである。
通常のSOQL文において、以下のルールが存在する。
- WHERE句はインデックスの位置順通りに指定する必要がある。
- WHERE句の最後以外は=とする必要がある。
- !=、LIKE、NOT IN、EXCLUDES、INCLUDESを使用することができない。
非同期SOQLは処理時間に制限なく、大量データの集計に活用可能である。