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

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

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

  • База данных Realtime — это исходная база данных Firebase. Это эффективное решение с низкой задержкой для мобильных приложений, которым требуется синхронизация состояний клиентов в режиме реального времени.

Какую базу данных рекомендует Firebase?

Ваш выбор решения для базы данных будет зависеть от многих факторов, но когда дело касается определенных функций, мы можем порекомендовать, какая база данных подойдет именно вам.

Оба решения предлагают:

  • SDK, ориентированные на клиента, без необходимости развертывания и обслуживания серверов.
  • Обновления в реальном времени
  • Уровень бесплатного пользования, а затем платите за то, что используете

Ключевые соображения

Помимо великолепных основных функций, общих для обеих баз данных, подумайте о том, как некоторые или все перечисленные ниже факторы повлияют на успех ваших приложений.

Роль базы данных
Мое приложение использует базу данных для...
В первую очередь синхронизация данных с помощью базовых запросов.
Если вам не нужны расширенные запросы, сортировка и транзакции, мы рекомендуем базу данных реального времени .
Расширенные запросы, сортировка и транзакции.
Если вам необходимо сложное взаимодействие с вашими данными, например, в приложениях электронной коммерции, мы рекомендуем Cloud Firestore .
Операции с данными
Использование базы данных моего приложения выглядит так...
Несколько ГБ или меньше данных, которые часто меняются.
Если ваше приложение будет отправлять поток небольших обновлений, например, в приложении для цифровой доски, мы рекомендуем базу данных Realtime Database .
От сотен ГБ до ТБ данных, которые читаются гораздо чаще, чем изменяются.
Для очень больших наборов данных и при частой необходимости пакетных операций мы рекомендуем Cloud Firestore .
Модель данных
Я предпочитаю структурировать свои данные как...
Простое дерево JSON.
Для неструктурированных данных JSON мы рекомендуем базу данных реального времени .
Документы организованы в коллекции.
Для структурированных документов и коллекций мы рекомендуем Cloud Firestore .
Доступность
Мои потребности в доступности...
Чрезвычайно высокая гарантия безотказной работы — 99,999%.
Если доступность имеет первостепенное значение, например, в приложениях электронной коммерции, мы рекомендуем Cloud Firestore .
Гарантия бесперебойной работы не менее 99,95%.
Когда приемлема очень высокая, но не критическая доступность, мы рекомендуем использовать Cloud Firestore или Realtime Database .
Автономные запросы к локальным данным
Моему приложению потребуется выполнять запросы на устройствах с ограниченным подключением или без него...
Часто.
Для расширенных возможностей запроса локальных данных, когда пользователь находится в автономном режиме, мы рекомендуем Cloud Firestore .
Редко или никогда.
Если вы ожидаете, что ваши пользователи будут постоянно находиться в сети, мы рекомендуем Cloud Firestore или Realtime Database .

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

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

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

И база данных реального времени, и Cloud Firestore являются базами данных NoSQL.

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

Узнайте больше о модели данных базы данных реального времени .

Хранит данные в виде коллекций документов.
  • Простые данные легко хранить в документах, которые очень похожи на JSON.
  • Сложные иерархические данные легче организовать в масштабе, используя подколлекции внутри документов.
  • Требует меньше денормализации и выравнивания данных.

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

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

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

База данных реального времени Облачный пожарный магазин
Офлайн-поддержка клиентов Apple и Android. Офлайн-поддержка для Apple, Android и веб-клиентов.

Присутствие

Может быть полезно знать, когда клиент онлайн или офлайн. База данных Firebase Realtime может записывать состояние соединения клиента и предоставлять обновления каждый раз, когда состояние соединения клиента меняется.

База данных реального времени Облачный пожарный магазин
Присутствие поддерживается. Не поддерживается изначально. Вы можете использовать поддержку присутствия в базе данных реального времени, синхронизировав Cloud Firestore и базу данных реального времени с помощью облачных функций. См. раздел Создание присутствия в Cloud Firestore .

Запрос

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

База данных реального времени Облачный пожарный магазин
Глубокие запросы с ограниченными возможностями сортировки и фильтрации .
  • Запросы могут сортироваться или фильтроваться по свойству, но не по тому и другому.
  • По умолчанию запросы являются глубокими: они всегда возвращают все поддерево.
  • Запросы могут получать доступ к данным с любой степенью детализации, вплоть до значений отдельных конечных узлов в дереве JSON.
  • Запросы не требуют индекса; однако производительность некоторых запросов снижается по мере роста вашего набора данных.
Индексированные запросы с составной сортировкой и фильтрацией .
  • Вы можете объединить фильтры и объединить фильтрацию и сортировку по свойству в одном запросе.
  • Запросы неглубоки: они возвращают только документы из определенной коллекции или группы коллекций и не возвращают данные подколлекции.
  • Запросы всегда должны возвращать целые документы.
  • По умолчанию запросы индексируются: производительность запросов пропорциональна размеру набора результатов, а не набора данных.

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

База данных реального времени Облачный пожарный магазин
Основные операции записи и транзакций. Расширенные операции записи и транзакций.
  • Записывайте операции с данными с помощью операций установки и обновления, а также расширенных преобразований, таких как массивы и числовые операторы.
  • Транзакции могут атомарно читать и записывать данные из любой части базы данных.

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

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

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

База данных реального времени Облачный пожарный магазин
Масштабирование требует шардинга.
  • Масштабируйтесь примерно до 200 000 одновременных подключений и 1000 операций записи в секунду в одной базе данных. Для большего масштабирования требуется разделение ваших данных по нескольким базам данных.
  • Никаких локальных ограничений на скорость записи отдельных фрагментов данных.
Масштабирование происходит автоматически.
  • Масштабируется полностью автоматически. В настоящее время пределы масштабирования составляют около 1 миллиона одновременных подключений и 10 000 операций записи в секунду. В будущем мы планируем увеличить эти лимиты.
  • Имеет ограничения на скорость записи в отдельные документы или индексы.

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

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

Цены

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

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

Узнайте больше о тарифных планах базы данных реального времени .

В основном взимается плата за операции, выполняемые в вашей базе данных (чтение, запись, удаление) , а также, по более низкой ставке, за пропускную способность и хранилище.

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

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

Использование Cloud Firestore и базы данных реального времени

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

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

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

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