Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
Эта страница переведена с помощью Cloud Translation API.
Switch to English

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

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

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

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

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

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

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

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

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

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

Роль базы данных
Мое приложение использует базу данных для ...
В первую очередь синхронизация данных с базовыми запросами.
Если вам не нужны расширенные запросы, сортировка и транзакции, мы рекомендуем Realtime Database .
Расширенные запросы, сортировка и транзакции.
Если вам нужно сложное взаимодействие с вашими данными, например, в приложениях для электронной коммерции, мы рекомендуем Cloud Firestore .
Операции с данными
Использование базы данных моего приложения выглядит так ...
Несколько ГБ или меньше данных, которые часто меняются.
Если ваше приложение будет отправлять поток крошечных обновлений, например, в приложении для цифровой доски, мы рекомендуем Realtime Database .
Сотни ГБ в ТБ данных, которые читаются гораздо чаще, чем меняются.
Для очень больших наборов данных и когда часто требуются пакетные операции, мы рекомендуем Cloud Firestore .
Модель данных
Я предпочитаю структурировать свои данные как ...
Простое дерево JSON.
Для неструктурированных данных JSON мы рекомендуем Realtime Database .
Документы организованы в коллекции.
Для структурированных документов и коллекций мы рекомендуем 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 и Realtime Database.

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

И Realtime Database, и Cloud Firestore являются базами данных NoSQL.

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

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

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

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

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

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

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

Присутствие

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

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

Запрос

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

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

Пишет и транзакции

База данных в реальном времени Cloud Firestore
Основные операции записи и транзакции. Расширенные операции записи и транзакции.

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

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

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

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

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

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

Ценообразование

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

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

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

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

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

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

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

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

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

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

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