BLOG
2018.04.09
Salesforceのデータストレージで困ったら・・・ ~Big Object~
はじめに
こんにちは。クラウドソリューショングループのエンジニアの高尾です。
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環境へデプロイ
- migration > Deployと遷移
- zipファイルをアップロードして適切なオプションを選択してNextをクリック
- 次の画面でDeployをクリック、結果にエラーがなければデプロイ完了
※ワークベンチは以下のURLからアクセス
https://workbench.developerforce.com/login.php
すると、以下のようなカスタムBig Objectが作成されます。
カスタムBig Objectのレコードの制御
先ほど作成したBigObjectSampleに対してApexクラス経由で
レコードの追加と検索を行ってみます。
以下のようなクラスを作成します。
※クエリの方法は以下のTrailを参照
https://trailhead.salesforce.com/ja/modules/big_objects/units/big_objects_querying
開発者コンソールのExecuteAnonymousから以下のような形で処理を実行します。
実行時のログを確認すると、
BigObjectSampleのレコードが追加され、作成されたレコードを検索できていることが確認できます。
(各項目同一内容のログが出力されています)
create処理
queryRecords処理
まとめ
定義については少し慣れが必要な部分もありますが、
概ねこれまで培ったSalesforceの開発技術や知識で構築が可能で、
外部サービス連携よりもハードルは低いように感じられます。
比較的最近のバージョンで正式リリースになったばかりですし、
実際の開発を行うには制限事項などまだまだ調査・検証する部分も多々ありますが、
データストレージがネックとなるような案件の問題解決の選択肢には十分なり得る機能のように思えます。
Salesforce 技術関連記事
- Salesforce でお小遣い帳を作ってみよう!
- Salesforceでノンプログラミングでプロセス自動化
- Salesforceのデータを簡単更新!Googleスプレッドのアドオン「Data connector for Salesforce(Beta版)」を使ってみた
- Visual Studio Code で作る Salesforce 開発環境
- 画像解析で将棋の棋譜を読む
- Salesforceのデータストレージで困ったら・・・ ~Big Object~
- Salesforceを簡単更新!Googleスプレッドシート上でSalesforceデータの一括編集をやってみた!
- VisualforceをLightning Experience風のスタイルに ~LightningStylesheets属性~
- Salesforce 「活動(行動&ToDo)」のアーカイブについて
- データの「探索的分析」をやってみませんか? ~Einstein Analytics~
- Salesforce のデータをExcel 上で一括更新できるアプリ「VyNDEX」を使ってみた!
一緒に開発しませんか?
サンビット株式会社では、Salesforce によるクラウドシステム構築の開発技術者を募集しています!
興味のある方はぜひお問い合わせください。