Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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