今回はBigObjectに関してのモジュール3つをまとめて解説しながらやっていきます。
Contents
Big Object とは
Big Object を使用すれば、Salesforce Platform 上で10億件以上のデータを保存して管理することができます。
BigObjectには2つの種類があります。
標準 Big Object
Salesforceによって定義され、salesforce製品に含まれるオブジェクト 例:FieldHistoryArchive
カスタム Big Object
設定で定義されリリースされるオブジェクト 定義や項目、インデックスを設定できる。
カスタムBigObjectの定義
簡単に作成することができます。設定画面からBigObjectと検索し新規作成画面にいきます。

作成の際は注意があります。
- オブジェクト名 → Big Object の一意の API 参照名管理パッケージでは、この名前により、複数のパッケージインストールでの名前の競合が回避されます。英数字文字とアンダースコアのみを使用します。名前は文字で始まる必要があり、空白を含むことはできません。名前には、最後にアンダースコアを使用しない、2 つ続けてアンダースコアを使用しないという制約があります。 保存すると、Big Object の API 参照名が、カスタムオブジェクトのサフィックス「__c」のようにサフィックス「__b」で識別されます。
ここでカスタムオブジェクトとの違いが出ました。サフィックスが__bになるという点を覚えておきましょう。
- リリース状況 → Big Object を作成すると、状況が [開発中] に設定されます。少なくとも 1 つのカスタム項目を含むインデックスが Big Object に含まれるまで、Big Object をリリースできません。必須のカスタム項目のみをインデックスに含めることができます。インデックスを作成したら、2 つ目の状況 [リリース済み] が表示されます。ユーザにアクセス権を付与する準備ができたら、状況を [リリース済み] に変更します。
中身のないものはリリースできないよということですね。
Big Object のカスタム項目
- 参照関係
- 日付/時間
- メール
- 数値
- 電話
- テキスト
- テキストエリア (ロング)
- URL
基本的にはカスタム項目を追加する要領で作成していきます。
注:Big Object のインデックスを作成するには、少なくとも 1 つのカスタム項目を必須としてマークする必要があります。
実際に作っていきましょう。


カスタム項目はオブジェクトに作成するのと同じ要領です。

次はインデックスの設定です。

今回はTrailheadを参考にしています。

インデックスまでつけたら最後にDeployedするのを忘れないようにしましょう。
注:インデックスを編集または削除することはできません。インデックスを変更するには、新しい Big Object を使用してやり直します。[設定] からカスタム Big Object を削除することもできます。削除されたカスタム Big Object は 15 日間保存されます。その期間中は、そのカスタム Big Object を復元するか完全に削除することができますが、15 日間を過ぎると完全に削除されます。
だそうなので設定する時は問題ないかをしっかり確かめてからにしましょう。
Big Object のクエリ
BigObjectではSOQL及び非同期SOQLによってデータを取得していきます。
SOQL
BigObjectにおけるSOQLではインデックス項目を含まなければいけません。
例えば前述のBigObjectを使う際は2つのインデックス項目に対する順番を守った上で
クエリを発行する必要があります。
まら使える演算子も限られており、!=、LIKE、NOT IN、EXCLUDES、INCLUDES 演算子は使えないので注意しましょう。
ちなみに上記の制限は非同期SOQLでは関係ないようです。
非同期 SOQL
非同期 SOQL は、カスタム Big Object 内の何百万もの潜在的なレコードを管理するために開発されました。非同期 SOQL は、クエリ対象のデータが非常に大きいためにリアルタイムで結果を待てない場合に SOQL クエリを実行するための方法です。これは、非常に拡張性の高いソリューションで、SOQL コマンドのサブセットを使用するため、すでに SOQL に慣れているユーザは簡単に使用できます。非同期 SOQL は、クエリのスケジュールと実行をバックグラウンドで非同期に行うため、通常の SOQL ではタイムアウトするようなクエリを実行できます。非同期 SOQL を使用すれば、バックグラウンドで複数のクエリを実行して、それらの完了状況を監視できます。クエリを設定し、数時間後に戻ってくれば、素晴らしいデータセットが完成しています。非同期 SOQL は、Big Object にある大量のデータを最も効率的に処理する方法です。
https://trailhead.salesforce.com/ja/content/learn/modules/big_objects/big_objects_get_started
大量データを扱うBigObjectでは通常非同期SOQLを使うようです。
しかしながら少ないデータやすぐに結果が欲しい場合にはSOQLということで
状況に応じて使い分けるということで良いと思います。
ただ注意なのが
カスタム Big Object はすべてのライセンスに含まれていますが、非同期 SOQL は追加の Big Object 容量のライセンスにのみ含まれることに注意してください。
https://trailhead.salesforce.com/ja/content/learn/modules/big_objects/big_objects_querying
以上になります。
大量データを扱うような現場があれば使ってみたい機能ですね。
ご覧いただきありがとうございました。
コメント