技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Salesforce開発の基礎編6

データベースと .NET の基本

trailhead.salesforce.com

.NET は忘れていい。というか引きずると超ハメられる。
決して .NET 程リッチなつくりではないのだから…。

SQL から SOQL への移行

  • SOQL はあくまで検索機能しかない (insert, update 等は DML であって SOQL ではない)
  • SOQL は標準的に SELECT * はできない(ことになっている)。
    調べれば分かるが summer 21 アップデートで FIELDS が入るので、事実上の * はできるようになる。(制限として 200 行以下縛りがある)Salesforce Spring '21の新機能、SOQLのFIELDS()関数について - TerraSkyBase | テラスカイを支える人とテクノロジーの情報を発信する基地局
    通常は必要なフィールドを全部列挙する。
  • クエリの作成は ワークベンチ を使うこともできる。てーかめんどくさくて普通の開発では使わないけど。
  • LIKE 等は普通に使える。ORDER BYLIMIT 等も普通に使える。
  • JOIN はできない。CONTAIN も存在しないし、サブクエリも実質存在しない(SQL使いにしてみれば F〇CK YOU! と叫びたくなる)
  • has-a 関係やリレーション項目が存在していれば、そこを経由して検索することができる。
    SELECT Name, (Select FirstName, LastName FROM Contacts) FROM Account

SOSL クエリの作成

全文検索クエリが使える。SOSL 基盤には Lucene が使われている。
ただしインデックスがどう使われるかは開発者が操作できない…

FIND {"grand*"} IN ALL FIELDS RETURNING Account(Name), Contact(LastName, FirstName, Email)

まぁ割と見たまま過ぎて突っ込むこともないよね。

効率的なクエリの作成

クエリ自体はバックエンドが Oracle なんでオプティマイズはその辺任せ。
デフォルトでは以下の項目にインデックスができる。
インデックスは DB が高速に検索するための設定

  • Id
  • Name
  • OwnerId
  • CreatedDate, SystemModStamp
  • RecordType
  • 主従項目、参照項目
  • unique 制約を入れた項目
  • 外部ID項目

クエリプランは開発者コンソールから

f:id:white-azalea:20210525200819p:plain
f:id:white-azalea:20210525200847p:plain
f:id:white-azalea:20210525201006p:plain

で出てくる

DML を使用したレコードの変更

開発者コンソールからガンガン行ける。

f:id:white-azalea:20210525201153p:plain

もしくは insert などのDML句を使おう。Database クラスからでも操作できる。

// Add Account
Account acct = new Account(
    Name='Test Account',
    Phone='(225)555-8989',
    NumberOfEmployees=10,
    BillingCity='Baton Rouge');
Database.SaveResult[] results = Database.insert(acct, false);

検索ソリューションの基礎

trailhead.salesforce.com

適切な検索ソリューションの選択

SOQL と SOSL の使い方…って上記で差は書いてるよね…
他の検索機能として Search Suggested Records / Search Suggested Articles という REST API がある。

一般的な使用事例での検索の作成

検索事例の説明ですね。
一般的な使用事例での検索の作成 単元 | Salesforce Trailhead

検索結果の最適化

  • 効率的なテキスト検索の作成: 要するに検索対象となるデータは制限しませう。返ってくるデータも制限しよう。
    • 検索範囲を IN で制限 FIND {jsmith@cloudkicks.com} IN EMAIL FIELDS RETURNING Contact
    • 取得行を LIMITOFFSET で取得(加えて取得するデータも制限) : FIND {Cloud Kicks} RETURNING Account (Name, Industry ORDER BY Name LIMIT 10 OFFSET 25)
    • 特定の設定 WITH 突っ込んで制限

後はシノニム(同義語)。まぁ表記ゆれ対策ですね。Playstation, PS, Play Station, プレステ どれも同じものを指してますが表記が違う。
これに対処するため、同義語辞書が存在します。

f:id:white-azalea:20210525212208p:plain
f:id:white-azalea:20210525212359p:plain