Перейти к основному содержимому

Cloud Firestore

База данных Firestore — это продукт от Google Firebase. Это гибкая, масштабируемая NoSQL-облачная база данных. Она позволяет хранить данные вашего приложения и использует прослушиватели в реальном времени для поддержания синхронизации данных.

Давайте разберёмся с базой данных Firestore (Cloud Firestore, NoSQL-база данных) подробнее.

Что такое NoSQL-база данных

NoSQL-база данных не имеет схемы. Это значит, что данные НЕ хранятся в формате таблиц. У вас на самом деле нет никаких ограничений на то, как хранить данные. База данных Firestore использует модель коллекция-документ для хранения данных.

Ключевые термины, которые стоит запомнить:

  • Коллекция: Коллекция — это просто набор «документов».
  • Документ: Документ — это запись, содержащая «поля».
  • Поля: Пары ключ-значение внутри документа называются «полями». Например, имя, место, возраст и т. д.

Чтобы лучше понять, посмотрите на схему ниже:

img.png

Модель коллекция-документ

Информация о каждом пользователе хранится в уникальном документе. Несколько таких документов объединяются в коллекцию. Преимущество этой системы в том, что не все документы в коллекции должны иметь одинаковые поля. Таким образом, если вы решите добавить новое поле (например, дата рождения, изображение) в новый документ, вам не нужно возвращаться и добавлять его в старые.


Структура базы данных

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

С помощью FlutterFlow вы можете структурировать базу данных следующим образом:

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

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

Например, вы создаёте коллекции, такие как «комментарии» и «посты», на корневом уровне. Комментарии ко всем постам хранятся в одной коллекции верхнего уровня. Чтобы понять, какой комментарий относится к какому посту, вы добавляете дополнительные поля ссылок, которые однозначно идентифицируют каждый пост в этой структуре.

img_1.png

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

Профессиональный совет

Используйте коллекции верхнего уровня, когда вы часто выполняете поиск или фильтрацию внутри одной коллекции без зависимости от другой. Например, если вы хотите увидеть все комментарии независимо от связанного с ними поста (т. е. показать комментарии с наибольшим количеством лайков).

Подколлекции внутри документов

Коллекции создаются внутри документа. Такая коллекция называется подколлекцией.

Например, вы создаёте коллекцию верхнего уровня, такую как посты, а затем создаёте коллекцию «комментарии» (как подколлекцию) внутри коллекции «посты». В чём преимущество? Вам не нужны дополнительные теги или поля ссылок, чтобы понять, к какому посту относится комментарий; они уже сгруппированы именно там.

img_2.png

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

Профессиональный совет

Подколлекция подходит лучше всего, когда у вас есть несколько запросов, фильтров или поисков по коллекции, которая основана на другой коллекции. Например, загрузка или поиск комментариев к конкретному посту (т. е. показать все комментарии к конкретному посту, у которых больше лайков).

к сведению

Вы можете защитить данные с помощью правил Firestore.


Подробнее

MongoDB, Cassandra и ElasticSearch — это другие решения NoSQL-баз данных, доступные на рынке.

Если вы визуальный ученик, вы можете посмотреть видео:

Управление базами данных

Вы также можете создать несколько баз данных Firestore в одном проекте Firebase. Это особенно полезно для корпоративных сценариев, например, при управлении базами данных на основе регионов или поддержке нескольких клиентов с изолированными хранилищами данных.

Кроме того, вы можете использовать несколько баз данных для имитации различных сред, таких как разработка, staging и производство. Однако обратите внимание, что эта настройка не связана напрямую с средами разработки в FlutterFlow, которая работает независимо от конфигурации нескольких баз данных Firebase. Это значит, что вам придётся вручную переключать ID базы данных Firestore при переключении сред разработки.

Чтобы создать новую базу данных, перейдите в раздел Firebase Console > Firestore Database. Нажмите кнопку рядом с базой данных по умолчанию, т. е. Добавить базу данных. Выберите регион и настройте правила безопасности. После создания новой базы данных вы сможете переключаться между базами данных с помощью выпадающего списка.

Далее скопируйте новый ID базы данных и перейдите в FlutterFlow > Settings and Integrations > Firebase > Advanced Settings. Вставьте ID в поле ввода Firestore Database ID. Наконец, перегенерируйте файл конфигурации. Теперь ваше приложение будет использовать newly созданную базу данных.