Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

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

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

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

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

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

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

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

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

Что еще нужно учитывать?

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

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

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

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

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

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

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

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

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

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

Присутствие

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

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

Запрос

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

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

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

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

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

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

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

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

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

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

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

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

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

Подробнее о Realtime тарифных планов базы данных .

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

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

Подробнее о Cloud Firestore тарифных планов .

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

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

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

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

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