2020/8/23 Firebase:Choose a data structureの訳

 

Cloud Firestore >> Add and manage data >> Structure data

Cloud Firestoreであなたのデータ構築する時、いくつかの方法があります。

  • Documents
  • Multiple collections
  • Subcollections within documents

それぞれの方法の利点をあなたのユースケースと照らし合わせて考えていきましょう。このガイドでいくつかの階層構造のデータの構築のサンプルを見ていきます。

Nested data in documents

ドキュメント内で、配列やマップのように複雑なオブジェクトをネストする方法です。

利点:ドキュメント内で長さの決まっているシンプルなlists(配列)データがある場合、セットアップが用意です。

制限:他の方法のようなスケーラビリティはありません。リストの長さが大きくなると、ドキュメントも大きくなります。そうするとドキュメント取得に時間がかかります。

ユースケース:例えば、チャットアプリのプロフィール内で、そのユーザの最近の3つの訪れたチャットルームを保存したい場合。

 

Subcollections

時間の経過と共にデータ量が増える可能性のあるデータの場合ドキュメント内にサブコレクションを生成する方法が良いです。

利点:ドキュメント内のリスト(配列)の要素数が増えても、ドキュメントのサイズを変えたくない場合に適しています。サブコレクションに置いて完全なクエリ能力を獲得できます。また、サブコレクションに対してcollection group queriesを発することができます。

制限:サブコレクションを簡単に削除することができません。

ユースケース:例えば、チャットアプリで、チャットルームドキュメントの中にusersサブコレクションを作る、あるいはチャットルームドキュメントの中にmessagesサブコレクションを作る、というようなケース。

 

Root-level collections

異なる種類のデータセットを扱うために、Firestoreのルートレベルに複数のコレクションを作る方法です。

利点:ルートレベルのコレクションは、多対多の関係に適しており、各コレクション内で強力なクエリを提供します。

制限:自然に階層化されたデータを取得することは、データベースが大きくなるにつれてますます複雑になる可能性があります。

ユースケース:例えば、チャットアプリで、Firestoreのルートレベルに

  • usersコレクション
  • roomsコレクション

の二つのコレクションを作成する場合。

 

参考

https://firebase.google.com/docs/firestore/manage-data/structure-data?authuser=0

コメントを残す

メールアドレスが公開されることはありません。