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

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

  • Документы
  • Множество коллекций
  • Подгруппы внутри документов

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

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

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

  • Преимущества: Если у вас есть простые, фиксированные списки данных, которые вы хотите хранить в документах, это легко настроить и оптимизирует структуру ваших данных.
  • Ограничения: Этот вариант не так масштабируем, как другие, особенно если ваши данные со временем увеличиваются. При больших или постоянно растущих списках увеличивается и размер документа, что может привести к замедлению времени поиска документа.
  • Какой возможный вариант использования? Например, в чат-приложении можно хранить 3 последних посещенных пользователем чата в виде вложенного списка в его профиле.
  • аловелайс
    • имя :
      первый: "Ада"
      последний: "Лавлейс"
      родился: 1815 год
      комнаты:
      0: "Программный чат"
      1: «Известные личности»
      2: «Знаменитые разработчики программного обеспечения»

Подколлекции

Вы можете создавать коллекции внутри документов, если у вас есть данные, объем которых может увеличиваться со временем.

  • Преимущества: По мере роста ваших списков размер родительского документа не меняется. Вы также получаете полные возможности запросов к подколлекциям и можете выполнять запросы к группам коллекций в рамках подколлекций.
  • Ограничения: Вы не можете легко удалять подколлекции.
  • Какой возможный сценарий использования? Например, в том же приложении для чата вы можете создавать коллекции пользователей или сообщений внутри документов чат-комнаты.
  • наука
    • программного обеспечения
      имя: "программный чат"
      • users
        • аловелайс
          первый: "Ада"
          последний: "Лавлейс"
        • райд
          первый: "Салли"
          последний: "Поездка"


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

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

Создавайте коллекции на корневом уровне вашей базы данных для организации разрозненных наборов данных.

  • Преимущества: Корневые коллекции хорошо подходят для связей «многие ко многим» и обеспечивают мощные возможности запросов внутри каждой коллекции.
  • Ограничения: Получение данных, имеющих иерархическую структуру, может становиться все более сложным по мере роста вашей базы данных.
  • Какой возможный сценарий использования? Например, в одном и том же приложении для чата вы можете создать одну коллекцию для пользователей и другую для комнат и сообщений.
  • users
    • аловелайс
      первый: "Ада"
      последний: "Лавлейс"
      родился: 1815 год
    • райд
      первый: "Салли"
      последний: "Поездка"
      Дата рождения: 1951
  • комнаты
    • программного обеспечения
      • сообщения
        • сообщение1
          из: "alovelace"
          содержание : "..."
        • сообщение2
          от : "sride"
          содержание : "..."