Выберите базу данных: Cloud Firestore или базу данных реального времени.

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

  • Cloud Firestore — это рекомендуемая корпоративная база данных, совместимая с JSON, которой доверяют более 600 000 разработчиков. Она подходит для приложений со сложными моделями данных, требующими возможности выполнения запросов, масштабируемости и высокой доступности. Кроме того, она обеспечивает синхронизацию данных с низкой задержкой и доступ к данным в автономном режиме.

  • Realtime Database — это классическая JSON-база данных Firebase. Она подходит для приложений с простыми моделями данных, требующими простого поиска и синхронизации с низкой задержкой при ограниченной масштабируемости.

Какие еще важные моменты следует учесть?

После рассмотрения всех вышеперечисленных ключевых моментов вы, возможно, готовы выбрать базу данных . Если вы все еще взвешиваете преимущества и недостатки, в этом разделе рассматриваются другие различия между Cloud Firestore и Realtime Database .

модель данных

И Realtime Database , и Cloud Firestore — это базы данных NoSQL.

Cloud Firestore [ ПРЕДПОЧТИТЕЛЬНО Realtime Database
Хранит данные в виде коллекций документов.
  • Простые данные легко хранить в документах, которые очень похожи на JSON.
  • Сложные иерархические данные проще организовывать в больших масштабах, используя подколлекции внутри документов.
  • Требует меньшего объема денормализации и сглаживания данных.

Узнайте больше о модели данных Cloud Firestore .

Хранит данные в виде одного большого JSON-дерева.
  • Простые данные очень легко хранить.
  • Организовать сложные иерархические данные в больших масштабах сложнее.

Узнайте больше о модели данных Realtime Database .

Поддержка в режиме реального времени и в автономном режиме.

Обе системы имеют SDK, ориентированные на мобильные устройства и работающие в режиме реального времени, и обе поддерживают локальное хранение данных для приложений, готовых к работе в автономном режиме.

Cloud Firestore [ ПРЕДПОЧТИТЕЛЬНО Realtime Database
Поддержка работы в автономном режиме для клиентов Apple, Android и веб-клиентов. Поддержка работы в автономном режиме для клиентов Apple и Android.

Присутствие

Полезно знать, находится ли клиент в сети или вне сети. Firebase Realtime Database может записывать статус подключения клиента и предоставлять обновления каждый раз, когда состояние подключения клиента изменяется.

Cloud Firestore [ ПРЕДПОЧТИТЕЛЬНО Realtime Database
Встроенная поддержка отсутствует. Вы можете расширить поддержку отображения статуса присутствия в Realtime Database , синхронизировав Cloud Firestore и Realtime Database с помощью Cloud Functions См. раздел «Создание отображения статуса присутствия в Cloud Firestore . Поддержка отображения статуса присутствия.

Запросы

Извлекайте, сортируйте и фильтруйте данные из любой базы данных с помощью запросов.

Cloud Firestore [ ПРЕДПОЧТИТЕЛЬНО Realtime Database
Индексированные запросы с составной сортировкой и фильтрацией .
  • Вы можете объединять фильтры в цепочку и комбинировать фильтрацию и сортировку по свойству в одном запросе.
  • Запросы являются поверхностными: они возвращают только документы из определенной коллекции или группы коллекций и не возвращают данные подколлекций.
  • Запросы всегда должны возвращать целые документы.
  • Запросы индексируются по умолчанию: производительность запросов пропорциональна размеру результирующего набора данных, а не самому набору данных.
Глубокие запросы с ограниченными возможностями сортировки и фильтрации .
  • Запросы могут сортировать или фильтровать данные по объекту недвижимости, но не делать и то, и другое одновременно.
  • Запросы по умолчанию являются глубокими: они всегда возвращают всё поддерево целиком.
  • Запросы могут получать доступ к данным на любом уровне детализации, вплоть до значений отдельных листовых узлов в дереве JSON.
  • Для выполнения запросов индекс не требуется; однако производительность некоторых запросов снижается по мере роста объема данных.

Запись и транзакции

Cloud Firestore [ ПРЕДПОЧТИТЕЛЬНО Realtime Database
Расширенные операции записи и обработки транзакций.
  • Выполняйте операции с данными, используя операции установки и обновления, а также сложные преобразования, такие как операторы массивов и числовые операторы.
  • Транзакции позволяют атомарно считывать и записывать данные из любой части базы данных.
Основные операции записи и транзакций.
  • Запись данных осуществляется с помощью операций установки и обновления.
  • Транзакции являются атомарными на уровне конкретного поддерева данных.

Надежность и производительность

Cloud Firestore [ ПРЕДПОЧТИТЕЛЬНО Realtime Database
Cloud Firestore — это региональное и многорегиональное решение, которое масштабируется автоматически.
  • Решение с низкой задержкой, типичное время отклика которого не превышает 30 мс.
  • Размещает ваши данные в нескольких центрах обработки данных в разных регионах, обеспечивая глобальную масштабируемость и высокую надежность.
  • Доступен в региональных или многорегиональных конфигурациях по всему миру.
Подробнее о характеристиках производительности и надежности Cloud Firestore можно прочитать в Соглашении об уровне обслуживания .
Realtime Database — это региональное решение.
  • Доступны региональные конфигурации. Базы данных ограничены зональной доступностью в пределах региона.
  • Чрезвычайно низкая задержка, типичное время отклика не превышает 10 мс. Идеальный вариант для частой синхронизации состояний.
Подробнее о характеристиках производительности и надежности Realtime Database можно прочитать в Соглашении об уровне обслуживания .

Время безотказной работы

Cloud Firestore [ ПРЕДПОЧТИТЕЛЬНО Realtime Database
Чрезвычайно высокая производительность и время безотказной работы.
  • Типичный показатель бесперебойной работы составляет 99,999%.
  • Если доступность имеет первостепенное значение, например, в приложениях для электронной коммерции, используйте Cloud Firestore .
Высокая производительность и бесперебойная работа.
  • Типичный показатель бесперебойной работы составляет 99,95%.

Масштабируемость

Cloud Firestore [ ПРЕДПОЧТИТЕЛЬНО Realtime Database
Масштабирование происходит автоматически.
  • Масштабирование происходит полностью автоматически. Нет ограничений на количество одновременных подключений или общую скорость записи в базу данных в секунду.
  • Имеет ограничения на скорость записи в отдельные документы или индексы.
Для масштабирования требуется сегментирование.
  • Масштабирование до примерно 200 000 одновременных подключений и 1000 операций записи в секунду в одной базе данных. Для масштабирования сверх этого потребуется распределение данных по нескольким базам данных.
  • Нет локальных ограничений на скорость записи отдельных фрагментов данных.

Безопасность

Cloud Firestore [ ПРЕДПОЧТИТЕЛЬНО Realtime Database
Некаскадные правила, объединяющие авторизацию и проверку.
  • Осуществляет чтение и запись данных из мобильных SDK, защищенных Cloud Firestore Security Rules .
  • Осуществляет чтение и запись данных из серверных SDK, защищенных системой управления идентификацией и доступом (IAM) .
  • Правила не применяются последовательно, если не используется подстановочный знак.
  • Правила могут ограничивать запросы: если результаты запроса могут содержать данные, к которым пользователь не имеет доступа, весь запрос завершится ошибкой.
Язык каскадных правил, разделяющий авторизацию и проверку.
  • Осуществляет чтение и запись данных из мобильных SDK, защищенных Realtime Database Security Rules .
  • Правила чтения и записи каскадно применяются.
  • Проверка данных осуществляется отдельно с помощью правила validate .

Цены

Оба решения доступны в тарифных планах Spark и Blaze .

Cloud Firestore [ ПРЕДПОЧТИТЕЛЬНО Realtime Database
Плата взимается в основном за операции, выполняемые в вашей базе данных (чтение, запись, удаление), а также, по более низкой ставке, за пропускную способность и хранение данных.

Cloud Firestore поддерживает ежемесячные бюджеты и оповещения , чтобы вы не тратили больше, чем вам комфортно.

Подробнее о тарифных планах Cloud Firestore можно узнать здесь.

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

Подробнее о тарифных планах Realtime Database можно узнать здесь.

Использование Cloud Firestore и Realtime Database

В одном приложении или проекте Firebase можно использовать обе базы данных. Обе NoSQL-базы данных могут хранить одни и те же типы данных, а клиентские библиотеки работают аналогичным образом. Учитывайте ранее описанные различия, если решите использовать обе базы данных в своем приложении .

Узнайте больше о возможностях, доступных в Realtime Database и Cloud Firestore .

Готовы выбрать базу данных?

Надеюсь, это сравнение помогло вам определиться с решением для работы с базами данных Firebase. Теперь вы можете узнать, как добавить базу данных в свои проекты Firebase.