Выберите базу данных: 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.

Присутствие

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

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

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

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

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

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

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

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

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