データを構造化する
Firestore でのデータの構造化には、いくつかのオプションがあります。
- ドキュメント
- 複数のコレクション
- ドキュメント内のサブコレクション
各オプションの利点を考慮して使用ください。このガイドでは、階層データの構造の例をいくつか紹介しています。
ドキュメント内のネストデータ
ドキュメント内に配列やマップなどの複雑なオブジェクトをネストできます。
- 利点: ドキュメント内に単純な固定データリストを保持するような場合に、データ構造の設定と効率化を簡単に実現できます。
-
制限事項: 特に、データが時間の経過とともに拡大する場合は、他のオプションのようなスケーラビリティはありません。リストが大きくなったり、増加したりすると、ドキュメントも大きくなり、検索時間が遅くなる可能性があります。
- 適用可能なユースケース: チャットアプリで、ユーザーが最近閲覧した 3 つのチャットルームを、ネストされたリストとしてプロフィールに保存する。
|
- class alovelace
- name :
first : "Ada"
last : "Lovelace"
born : 1815
rooms :
0 : "Software Chat"
1 : "Famous Figures"
2 : "Famous SWEs"
|
サブコレクション
データが時間とともに増加する可能性がある場合、ドキュメント内にコレクションを作成できます。
- 利点: リストが大きくなっても、親ドキュメントのサイズが変わりません。サブコレクションに対しても、すべてのクエリ機能を使用でき、複数のサブコレクションにまたがるコレクション グループ クエリを発行できます。
- 制限事項: サブコレクションを簡単に削除することはできません。
- 適用可能なユースケース: 同じチャットアプリで、ユーザーやメッセージのデータをチャットルームのドキュメント内のコレクションとして作成する。
|
- collections_bookmark science
- class software
name : "software chat"
- collections_bookmark
users
- class
alovelace
first : "Ada"
last : "Lovelace"
- class
sride
first : "Sally"
last : "Ride"`
- class astrophysics
|
ルートレベルのコレクション
性質の異なるデータセットをまとめるには、データベースのルートレベルでコレクションを作成します。
- 利点: ルートレベルのコレクションは、多対多の関係に適しており、各コレクション内で強力なクエリを実行できます。
- 制限: データが階層的になっていることから、データベースが拡大するにつれ、データの取得が難しくなる可能性があります。
- 適用可能なユースケース: 同じチャットアプリで、ユーザー用に 1 つ、チャットルームとメッセージ用に 1 つそれぞれコレクションを作成する。
|
- collections_bookmark
users
- class alovelace
first : "Ada"
last : "Lovelace"
born : 1815
- class sride
first : "Sally"
last : "Ride"
born : 1951
- collections_bookmark rooms
- class software
- collections_bookmark
messages
- class
message1
from : "alovelace"
content : "..."
- class
message2
from : "sride"
content : "..."
|
動画
詳細については、次の動画をご覧ください。