コンソールへ移動

データ構造の選択

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