BLOG

2018.04.09

Salesforceのデータストレージで困ったら・・・ ~Big Object~

Tweet

はじめに

こんにちは。クラウドソリューショングループのエンジニアの高尾です。

Salesforce の Platform を利用したシステム開発でデータストレージの容量問題は往々にして起こりがちです。
標準のデータストレージは1GB(※)で約50万レコード分に相当しますが、
年間10万レコードを超える量のデータが発生するシステムで
全データを複数年保持する必要があるような場合であれば心許ない容量です。

※厳密には組織内のユーザ数により補正がかかる場合があります。

追加のデータストレージの購入や Heroku や AWS 等との外部サービス連携で解消する方法もありますが、
いずれにしてもランニングコストが大きくなり、それが原因でお客様の予算感と合わなくなることもこれまでありました。

そのようなケースの打開案として
Salesforce の Platform 内で大量のデータを保存・管理できる機能の「 Big Object 」について検証してみました。

特徴としては、

  • 100万件から10億件以上のレコードを保持可能
  • SOQL、Bulk、Chatter REST、SOAP API などの既存の Salesforce の Platform のツールで呼び出し可能
  • 膨大なデータを非同期で処理する非同期SOQLで処理可能
  • 設定、変更、削除はAPI経由(クリックベースでは編集のみ可)

といったものがあります。

今回の検証ではカスタム Big Object を作成し、
そこへ Apex クラス経由でレコードを追加し、そのレコードを検索してログへ表示してみました。

カスタムBig Objectの定義

今回は「 BigObjectSample 」という名前で作成します。
手順は以下の通り。

(1) メタデータ APIを介して定義するためのファイルの準備

  • object ファイル
  • permissionset ファイル(または profile ファイル)
  • package ファイル

※各ファイルの作成方法については以下のTrailを参照
https://trailhead.salesforce.com/ja/modules/big_objects/units/big_objects_define_custom_big_objects

(2)(1)で準備したファイルをzipファイル内に格納(フォルダ構成は以下の通り)

ファイル構成

(3)ワークベンチから作成したzipファイルをSalesforce環境へデプロイ

  1. migration > Deployと遷移
  2. zipファイルをアップロードして適切なオプションを選択してNextをクリック
  3. 次の画面でDeployをクリック、結果にエラーがなければデプロイ完了

※ワークベンチは以下のURLからアクセス
https://workbench.developerforce.com/login.php

すると、以下のようなカスタムBig Objectが作成されます。

カスタムBig Objectのレコードの制御

先ほど作成したBigObjectSampleに対してApexクラス経由で
レコードの追加と検索を行ってみます。

以下のようなクラスを作成します。

開発者コンソールのExecuteAnonymousから以下のような形で処理を実行します。

実行時のログを確認すると、
BigObjectSampleのレコードが追加され、作成されたレコードを検索できていることが確認できます。
(各項目同一内容のログが出力されています)

create処理

queryRecords処理

まとめ

定義については少し慣れが必要な部分もありますが、
概ねこれまで培ったSalesforceの開発技術や知識で構築が可能で、
外部サービス連携よりもハードルは低いように感じられます。

比較的最近のバージョンで正式リリースになったばかりですし、
実際の開発を行うには制限事項などまだまだ調査・検証する部分も多々ありますが、
データストレージがネックとなるような案件の問題解決の選択肢には十分なり得る機能のように思えます。

カレンダー

«4月»
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30      

ブログ内検索