Выберите базу данных: 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, защищенных с помощью 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.