Google 致力于为黑人社区推动种族平等。查看具体举措
Эта страница переведена с помощью Cloud Translation API.
Switch to English

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

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

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

  • 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, синхронизируя Cloud Firestore и базу данных Realtime с помощью облачных функций. См. Раздел " Присутствие сборки в Cloud Firestore" .

Запрос

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

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

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

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

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

База данных в реальном времени Cloud Firestore
База данных Realtime - это региональное решение.
  • Доступен в региональных конфигурациях. Доступность баз данных ограничена зонами в пределах региона.
  • Чрезвычайно низкая задержка, идеальный вариант для частой синхронизации состояния.
Подробнее о характеристиках производительности и надежности базы данных Realtime Database в Соглашении об уровне обслуживания .
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.