Выберите базу данных: Cloud Firestore или Realtime Database.

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

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

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

Что ещё важно учитывать?

После того как вы обдумали предыдущие ключевые соображения, вы можете быть готовы выбрать базу данных. Если вы все ещё взвешиваете преимущества и недостатки, в этом разделе рассматриваются другие различия между 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
Расширенные операции записи и транзакций.
  • Операции записи данных с помощью операций set и update, а также расширенных преобразований, таких как операторы массивов и числовые операторы.
  • Транзакции могут атомарно считывать и записывать данные из любой части базы данных.
Базовые операции записи и транзакции.

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

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, защищенных Identity and Access Management (IAM).
  • Правила не применяются каскадно, если вы не используете подстановочный знак.
  • Правила могут ограничивать запросы. Если результаты запроса могут содержать данные, к которым у пользователя нет доступа, запрос не выполняется.
Язык каскадных правил, который разделяет авторизацию и проверку.

Цены

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

Cloud Firestore [ РЕКОМЕНДУЕТСЯ ] Realtime Database
Плата взимается в основном за операции, выполняемые в базе данных (чтение, запись, удаление), а также за пропускную способность и хранение.

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

Подробнее о тарифных планах Cloud Firestore…

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

Подробнее о тарифных планах Realtime Database…

Используйте и Cloud Firestore, и Realtime Database

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

Подробнее о функциях, доступных в Realtime Database и Cloud Firestore…

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

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