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

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

  • Cloud Firestore — это рекомендуемая база данных документов корпоративного уровня, совместимая с JSON, которой доверяют более 250 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.

Присутствие

Может быть полезно знать, когда клиент онлайн или офлайн. 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
Масштабирование происходит автоматически.
  • Масштабируется полностью автоматически. Пределы масштабирования составляют около 1 миллиона одновременных подключений и 10 000 операций записи в секунду. В будущем мы планируем увеличить эти лимиты.
  • Имеет ограничения на скорость записи в отдельные документы или индексы.
Масштабирование требует шардинга.
  • Масштабируйтесь примерно до 200 000 одновременных подключений и 1000 операций записи в секунду в одной базе данных. Для большего масштабирования требуется разделение ваших данных по нескольким базам данных.
  • Никаких локальных ограничений на скорость записи отдельных фрагментов данных.

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

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

Цены

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

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

Cloud Firestore поддерживает ежедневные лимиты расходов для проектов App Engine , чтобы вы не превысили комфортные для вас расходы.

Узнайте больше о тарифных планах Cloud Firestore .

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

Узнайте больше о тарифных планах Realtime Database .

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

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

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

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

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