Выберите структуру данных

Напоминаем, что при структурировании данных в Cloud Firestore у вас есть несколько вариантов:

  • Документы
  • Несколько коллекций
  • Вложенные коллекции в документах

Оцените преимущества каждого варианта с учетом ваших потребностей. В этом руководстве описано несколько примеров структур для иерархических данных.

Вложенные данные в документах

В документы можно вкладывать сложные объекты, например массивы или карты.

  • Преимущества. Если у вас есть простые фиксированные списки данных, которые вы хотите хранить в документах, этот вариант легко настроить и он упрощает структуру данных.
  • Ограничения. Этот вариант не так хорошо масштабируется, как другие, особенно если со временем объем данных увеличивается. По мере роста списков увеличивается и размер документа, что может привести к замедлению его извлечения.
  • Пример использования Например, в мессенджере вы можете хранить три чат-комнаты, которые пользователь посещал последними, в виде вложенного списка в его профиле.
  • alovelace
    •     name :
            first : "Ada"
            last : "Lovelace"
          born : 1815
          rooms :
            0 : "Software Chat"
            1 : "Famous Figures"
            2 : "Famous SWEs"

Вложенные подборки

Если у вас есть данные, которые могут со временем расширяться, вы можете создавать коллекции в документах.

  • Преимущества. По мере роста списков размер родительского документа не меняется. Вы также получаете полные возможности запросов к подколлекциям и можете отправлять запросы к группам коллекций по подколлекциям.
  • Ограничения. Удалить подколлекции не так просто.
  • Пример использования Например, в том же приложении для чата вы можете создать коллекции пользователей или сообщений в документах чат-комнаты.
  • science
    • software
        name : "software chat"
      • пользователей
        • alovelace
              first : "Ada"
              last : "Lovelace"
        • sride
              first : "Sally"
              last : "Ride"`


    • астрофизика
      • …

Коллекции корневого уровня

Создавайте коллекции на корневом уровне базы данных, чтобы упорядочивать разрозненные наборы данных.

  • Преимущества. Коллекции корневого уровня хорошо подходят для отношений "многие ко многим" и обеспечивают мощные возможности запросов в каждой коллекции.
  • Ограничения. По мере роста базы данных получать данные, которые по своей природе являются иерархическими, может становиться все сложнее.
  • Пример использования Например, в одном и том же чат-приложении вы можете создать одну коллекцию для пользователей, а другую – для комнат и сообщений.
  • пользователей
    • alovelace
          first : "Ada"
          last : "Lovelace"
          born : 1815
    • sride
          first : "Sally"
          last : "Ride"
          born : 1951
  • переговорных комнат
    • программное обеспечение
      • сообщения
        • message1
              from : "alovelace"
              content : "..."
        • message2
              from : "sride"
              content : "..."