Salesforce SOQL・SOSLのDB背景

- 数据库
    - データベース・Database・DB

- 关系型与非关系型
    - リレーショナルと非リレーショナル
    - relational/Non-relational DBMS(DB Management System)
- 大数据
    - ビッグデータ・Big Data

参考：[ビッグデータアーキテクチャの戦略 > データベースの基本について](https://trailhead.salesforce.com/ja/content/learn/modules/big-data-strategy/understand-the-basics-of-databases)

---------------------------------------
- 历史上的5个里程碑・歴史の 5 つのマイルストーン・Five milestones in history

1. 20世紀60年代、「Datebase」という用語が登場、非リレーショナル、自由形式のレコードがリンクされていただけでした
- 20世紀70年代、リレーショナルデータベースが登場、
    - 標準になり、正規化され、関連付けられ、検索可能なテーブルで構成されていました
- 20世紀80年代、デスクトップコンピューティングが普及すると、基盤となるデータベース「Oracle(1983年)、IBM DB2(1983年)等」、ユーザフレンドリー（用户操作界面）

---------------------------------------
- 20世紀90年代、オブジェクト指向プログラミング (OOP) が開発され、クラスやプロパティで整理
    - オブジェクト指向データベース管理システム (OODBMS; Object Oriented DBMS) 、
    - オブジェクト定義言語 (ODL; Object Definition Language)、
    - Illustra (Illustra Information Systems、後にInformixにより買収され、さらにそのInformixはIBMに買収された)、
    - Omniscience (Omniscience Corporation、後に Oracle Corporation により買収されオリジナルの Oracle Lite となった)
- 21世紀 非リレーショナルデータベースが NoSQL (Not only SQL) データベースという形で復活
    - シンプルながら拡張性に優れていた
    - ビッグデータ
    - リアルタイム 
    - Web アプリケーションの要求を満たす

---------------------------------------
- リレーショナルデータベース
    - 主キー、外部キー　　主键，外键
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356407/6c2a1cf6-a194-6d8c-467a-8c3e78e47341.png)
    - 原子性 アトミック (Atomic) ：　全てのタスクを成功させる必要、不成功タスクが有れば、トランザクションがロールバックされ
    - 一貫性 (Consistent): トランザクションを通してデータベースの状態が一貫している必要
    - 孤立 (Isolated): 各トランザクションが独立し、他のトランザクションに依存
    - デュラブル (Durable): 失敗したトランザクションのデータを復元できる
    - 厳格な構造


---------------------------------------
- 非リレーショナルデータベース
    - 1990 年代にインターネットが急速に広まり、カテゴリに収まらないデータが Web アプリケーションで生成されるようになると、構造に適合しない状況が生じるようになりました。
    - ここで非リレーショナルデータベースが盛り返します。
    - 「SQL に限定されない」を意味する「Not only SQL」あるいは「NoSQL」データベースと言われることもあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356407/1eda85df-9317-f9ac-3757-72781c364f66.png)
1. キー - 値ペアは連想配列モデル
2. 列指向ストアはテーブル構造
3. ドキュメント指向システム (XML)
4. グラフは、要素、要素間のリレーション、要素とリレーションの両方に割り当てられた属性を整理

---------------------------------------
- 非リレーショナルデータベースの特徴
1. 基本的に使用可能 (Basically available): 障害が発生した場合でもシステムを使用できます。
2. 状態の柔軟性 (Soft state): データの状態が変わる可能性があります。
3. 最終的な一貫性 (Eventual consistency): トランザクションレベルでは一貫性が保証されませんが、最終的には全ノードのデータが同期されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356407/a4340444-d28c-41fd-83f9-def9ef8d4e0f.png)

---------------------------------------
- ビッグデータ
    - ビッグデータとは、データセットが大きすぎるまたは複雑すぎるため、従来のデータ処理アプリケーションソフトウェアでは処理できないデータを言う
    - 「大きい」とは、何億 (場合によっては何十億) もの行のことです。
    - ストレージが安価になり、処理が高速になった現在ではビッグデータが巷に溢れています。
    - 人工知能 (AI) は機械学習を使用して、人間の限界を上回る速度でレコードを処理します。


---------------------------------------
- 標準オブジェクトとカスタムオブジェクト
    - プロセスビルダー、フロー、入力規則、Apex トリガなどのツールを使用
    - 1 つのオブジェクトに保存するレコードが 2,000 万件以下
    - 最新データにリアルタイムでアクセスする必要
    - 複数のレコード間のトランザクションをサポート


---------------------------------------
- Salesforce Connect
    - Salesforce 組織に大量のデータをコピーしたくない。
    - 一度に少量のデータにアクセスする。
    - 最新データをリアルタイムで取得する。


---------------------------------------
- Heroku Connect
Heroku Connect は、Salesforce と、管理 SQL DaaS (サービスとしてのデータベース) である Heroku Postgres データベースを結び付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356407/f56e04ae-6f91-bac1-5b37-c76b8213b9c5.png)
1. Salesforce に格納されているデータを変更する可能性がある B2C アプリケーションを使用する。
2. Salesforce と Heroku Postgres データベース間でデータを同期する必要がある。
3. 1 つのオブジェクトに保存するレコードが 2,000 万件以下である。
4. プロセスビルダー、フロー、入力規則、Apex トリガなどのツールを使用して、ビジネスロジックを自動化する必要がある。


---------------------------------------
- Big Object
    - データが 2,000 万行から数十億行に至る場合は Big Object を推奨
    - Big Object は非リレーショナルデータベースを使用してデータを格納
    - 主キーアクセスを使用するリアルタイムの SOQL クエリがサポートされ
    - インデックス付けによって、数十億行の全データに対してクエリが実行され
    - 【非同期 SOQL】 は、通常の SOQL で対処できない Big Object からの大量データを移動、変換、集計するよう最適化され
    - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356407/79544f83-df03-4ab8-c0a1-cd10c87c546f.png)
1.数百万行から数十億行のデータを処理する必要がある。
2.フルデータセットのデータと集計の多数のセットを (非同期 SOQL を使用して) バッチ処理する必要がある。
3.業務レポートまたは Tableau CRM を使用してビッグデータを分析する必要がある

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356407/7b75e207-45ee-d120-60a5-9ab47c2ccef7.png)


---------------------------------------
セキュリティ要件
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356407/d3f231d8-c7f4-add2-5ab3-145dc81a0b56.png)



---------------------------------------
適切なビッグデータソリューションの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356407/1baf6a17-e238-25f7-f2e6-71dfd3664525.png)
- 場所
- 数量
- データの使用法
- データ分析オプションの検討
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356407/d523b5a3-f415-db7f-aaf8-d7befea95f6e.png)