データ構造の選択

Cloud 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 : "..."

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。