Cloud Firestore でデータを構造化する場合、いくつかの異なるオプションがあることに注意してください。
- ドキュメント
- 複数のコレクション
- ドキュメント内のサブコレクション
ユースケースに関連する各オプションの利点を検討してください。このガイドでは、階層データの構造の例をいくつか紹介しています。
ドキュメント内のネストされたデータ
ドキュメント内で配列やマップなどの複雑なオブジェクトをネストできます。
- 利点:ドキュメント内に保持したいデータの単純な固定リストがある場合、これは簡単に設定でき、データ構造を合理化します。
- 制限:これは、特にデータが時間の経過とともに拡大する場合、他のオプションほどスケーラブルではありません。リストが大きくなったり大きくなったりすると、ドキュメントも大きくなり、ドキュメントの取得時間が遅くなる可能性があります。
- 考えられるユースケースは何ですか?たとえば、チャット アプリでは、ユーザーが最近アクセスした 3 つのチャット ルームをネストされたリストとしてプロファイルに保存できます。
| - classアロブレイス
- 名前 :
最初:「エイダ」 ラスト:「ラブレース」 生まれ:1815年 部屋 : 0 : 「ソフトウェアチャット」 1:「有名人」 2:「有名SWE」
|
サブコレクション
時間の経過とともに拡大する可能性のあるデータがある場合は、ドキュメント内にコレクションを作成できます。
- 利点:リストが大きくなっても、親ドキュメントのサイズは変わりません。また、サブコレクションに対して完全なクエリ機能を利用でき、サブコレクション全体でコレクション グループ クエリを発行できます。
- 制限:サブコレクションを簡単に削除することはできません。
- 考えられるユースケースは何ですか?たとえば、同じチャット アプリで、チャット ルーム ドキュメント内にユーザーまたはメッセージのコレクションを作成できます。
| - collections_bookmarkサイエンス
- classソフトウェア
name : 「ソフトウェアチャット」- collections_bookmarkユーザー
- classアロブレイス
最初:「エイダ」 ラスト:「ラブレース」
- classスライド
最初:「サリー」 last : "ライド"`
- class天体物理学
|
ルートレベルのコレクション
データベースのルート レベルでコレクションを作成して、異種のデータ セットを整理します。
- 利点:ルート レベルのコレクションは多対多の関係に適しており、各コレクション内で強力なクエリを実行できます。
- 制限:本来階層化されているデータの取得は、データベースが大きくなるにつれてますます複雑になる可能性があります。
- 考えられるユースケースは何ですか?たとえば、同じチャット アプリで、ユーザー用に 1 つのコレクションを作成し、ルームとメッセージ用に別のコレクションを作成できます。
| - collections_bookmarkユーザー
- classアロブレイス
最初:「エイダ」 ラスト:「ラブレース」 生まれ:1815年
- classスライド
最初:「サリー」 ラスト:「ライド」 生年月日:1951年
- collections_bookmarkルーム
- classソフトウェア
- collections_bookmarkメッセージ
- classメッセージ1
from : 「アロヴェレス」 コンテンツ : "..."
- classメッセージ 2
から:「スライド」 コンテンツ : "..."
|