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

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

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

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

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

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

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

  • Пакеты SDK, ориентированные на клиента, без серверов для развертывания и обслуживания
  • Обновления в реальном времени
  • Бесплатный уровень, затем платите за то, что используете

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Присутствие

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

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

Запрос

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

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

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

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

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

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

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

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

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

База данных реального времени Облако Firestore
Язык каскадных правил, который разделяет авторизацию и проверку. Некаскадные правила, сочетающие авторизацию и проверку.
  • Чтение и запись из мобильных SDK, защищенных правилами безопасности Cloud Firestore .
  • Чтение и запись из серверных SDK, защищенных Identity and Access Management (IAM) .
  • Правила не каскадируются, если вы не используете подстановочный знак.
  • Правила могут ограничивать запросы: если результаты запроса могут содержать данные, к которым у пользователя нет доступа, весь запрос завершается ошибкой.

Цены

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

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

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

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

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

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

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

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

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

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

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