Realtime vs Cloud Firestore: какую базу данных Firebase выбрать
Опубликовано: 2018-10-12История восходит к базе данных Firebase не так уж и далеко. Основанная как платформа для мобильной и веб-разработки, Firebase была создана в 2011 году, а затем в 2014 году она была приобретена технологическим гигантом Google, и ее судьба изменилась.
Если опережать историю эволюции Firebase, то в течение года после ее приобретения Google она была объединена с Divshot и с тех пор расширилась до единой платформы для мобильных разработчиков.
Firebase теперь интегрируется с различными другими сервисами Google, чтобы предлагать разработчикам более широкий спектр продуктов и возможностей. Фактически, преимущества, которые он предлагает, делают Firebase для стартапов модным процессом.
Так что же такое база данных Firebase? Firebase — это BaaS, то есть бэкенд как услуга. Используя продукты, предоставляемые Firebase, не только мобильные разработчики могут создавать высококачественные приложения. Google также запустил несколько новых функций для веб- пользователей Firebase.
Есть два продукта Firebase, которые позволяют создавать все приложения, которые мы только что упомянули. В реальном времени и в облаке Firestore.
Realtime — это хорошо зарекомендовавший себя продукт базы данных Google Firebase и Cloud Firestore, хотя и обещает лучшие технологии, но все еще находится на стадии бета-тестирования.
Согласно Google :
База данных реального времени — это исходная база данных Firebase. Это эффективное решение с малой задержкой для мобильного приложения, которому требуется синхронизация состояний между клиентами в режиме реального времени.
Cloud Firestore — это новая флагманская база данных Firebase для разработки мобильных приложений . Он улучшает успех базы данных реального времени с новой, более интуитивно понятной моделью данных. Cloud Firestore также предлагает более богатые, быстрые запросы и масштабируется лучше, чем база данных в реальном времени.
Прежде чем перейти к отдельным свойствам базы данных Realtime Database и Cloud Firestore, давайте посмотрим, каковы преимущества и недостатки использования базы данных Firebase для вашего следующего проекта:
Преимущества базы данных Firebase:
Если мы посмотрим на список причин, по которым следует использовать базу данных firebase в качестве универсальной базы данных для разработки всех мобильных и веб-приложений , мы увидим, почему база данных Firebase стала таким большим хитом в индустрии разработки мобильных приложений.
- Простая миграция данных . Недавние разработки предоставили разработчикам инструменты для простой миграции данных.
- Никаких дополнительных знаний не требуется . Для работы с базой данных Firebase не требуется практически никаких знаний о devOps или системном администраторе.
- Проверка различных типов данных . Несмотря на то, что структура базы данных Firebase не имеет схемы, она по-прежнему имеет базовую возможность проверки различных типов данных.
- Универсальный инструмент — это всеобъемлющий инструмент, и единственный, который вам обязательно нужен для серверной части небольшого мобильного приложения.
- Простота в использовании — уровень сложности использования немного выше среднего, но он проще, чем большинство других систем, когда речь идет об интеграции с аналитикой и мониторингом сбоев.
- Бесплатное использование — на начальном этапе это бесплатно, поэтому разработчикам, которые пробуют его впервые, не нужно беспокоиться о больших первоначальных инвестициях.
- Богатые библиотеки кода. Все библиотеки кода для разных языков программирования одинаковы и хорошо поддерживаются даже для новичков.
- Структура данных JSON — это структура данных JSON, которая идеально сочетается с JavaScript пользовательского интерфейса.
- Быстрая разработка — создание приложения с нуля происходит очень быстро — аутентификация, электронная почта, управление версиями, хостинг, мониторинг, DevOps, время безотказной работы.
- Простая потоковая передача — работа в режиме реального времени или потоковая передача обновлений очень проста.
Давайте теперь сравним базу данных Realtime и Cloud Firestore, чтобы иметь более четкое представление о том, когда что использовать. Облачное хранилище все еще находится на стадии бета-тестирования, и оно выглядит и работает более многообещающе, чем база данных реального времени. В этом сравнении вы увидите, чем две базы данных отличаются друг от друга, и кто выиграет: база данных в реальном времени или облачное хранилище.
Модель данных
- База данных реального времени хранит данные в виде одного большого дерева JSON, что упрощает хранение простых данных, но сложные или иерархические данные сложнее организовать в масштабе.
- С другой стороны, Cloud Firestore хранит данные в виде документов, которые организованы в коллекции. В этом хранение простых данных аналогично JSON и хранится в документах. Принимая во внимание, что сложные или иерархические данные не так просто организовать в масштабе с использованием подколлекций в документах. И в целом это требует меньшей денормализации и выравнивания данных.
Поддержка в режиме реального времени и в автономном режиме
- База данных в реальном времени обеспечивает автономную поддержку только для мобильных клиентов Android и iOS.
- С другой стороны, Cloud Firestore обеспечивает автономную поддержку для Android, iOS и веб-клиентов.
Запрос
- База данных в реальном времени предоставляет глубокие запросы с ограниченными функциями сортировки и фильтрации, когда разработчики могут либо сортировать, либо фильтровать свойство в одном запросе. И все запросы по умолчанию являются глубокими, то есть всегда возвращают все поддерево.
- Cloud Firestore индексирует запрос с составной сортировкой и фильтрацией, где разработчики могут фильтровать по цепочке и комбинировать фильтрацию и сортировку по свойству в одном запросе. Также можно писать неглубокие запросы для вложенных коллекций, то есть разработчики могут запрашивать внутри документа, а не всей коллекции или всего документа. Не только это, но и запросы индексируются по умолчанию, это означает, что производительность запроса пропорциональна размеру набора результатов, а не набора данных.
Транзакции
- В базе данных реального времени существуют основные операции записи и транзакции. Запись данных работает как отдельная операция, а для транзакций требуется обратный вызов завершения в собственных SDK.
- Cloud Firestore позволяет выполнять атомарные операции записи и транзакций. Он группирует операции и выполняет их автоматически. Кроме того, транзакции автоматически повторяются до тех пор, пока они не будут завершены.
Производительность и надежность
- База данных реального времени — это зрелый продукт. Он обладает стабильностью многократно испытанного настоящего продукта. Он также имеет очень низкую задержку, поэтому это хороший вариант для частой синхронизации состояний. Хотя базы данных ограничены зональной доступностью в одном регионе.
- Производительность Cloud Firestore пока нельзя измерить, потому что он все еще находится на стадии бета-тестирования. И стабильность в бета-версии продукта не такая, как у полностью запущенного продукта. Но с точки зрения надежности, Cloud Firestore хранит все ваши данные в нескольких центрах обработки данных в разных регионах, обеспечивая глобальную масштабируемость и высокую надежность. Теоретически, когда Cloud Firestore выйдет из бета-версии, его надежность будет выше, чем у базы данных Realtime.
Масштабируемость
- В базе данных реального времени масштабирование требует сегментирования. Проще говоря, масштабируйте примерно до 100 000 одновременных подключений и 1000 операций записи в секунду в одной базе данных, а кроме того, для этого требуется разбиение ваших данных на несколько баз данных.
- Когда Cloud firestore выйдет из бета-версии, масштабирование в нем будет автоматическим, и разработчикам не придется разбивать свои данные на несколько экземпляров.
Безопасность
- База данных реального времени имеет каскадные правила, требующие отдельной проверки. Правила базы данных firebase являются единственными параметрами безопасности, и разработчикам необходимо проверять данные отдельно, используя правило «проверки».
- Cloud Firestore имеет более простую и мощную защиту для мобильных, веб-и серверных SDK, которые используют управление идентификацией и доступом (IAM). Проверка данных также происходит автоматически. Кроме того, правила могут ограничивать запросы, то есть, если результаты запроса могут содержать данные, к которым у разработчика нет доступа, весь запрос завершается ошибкой.
Цены
- База данных реального времени взимает плату только за пропускную способность и хранилище, но по более высокой цене.
- Cloud Firestore , с другой стороны, взимает плату в основном за операции, выполняемые в вашей базе данных (чтение, запись, удаление), и по более низкой ставке, пропускной способности и хранилищу. Он также поддерживает дневные лимиты расходов для проектов Google App Engine.
Вы все еще задаетесь вопросом, как работает firebase? Давайте перемотаем краткое изложение того, что мы узнали из приведенной выше статьи.
Когда использовать базу данных реального времени:
- Если ваши данные простые, а не сложные или иерархические
- Если вам нужно масштабировать до 100 000 одновременных подключений, 1000 операций записи в секунду в одной базе данных
- Когда вам нужна база данных, которая взимает плату за общую пропускную способность и хранилище, а не за отдельные выполняемые операции.
Когда использовать базу данных Cloud Firestore:
- Если ваши данные сложные или иерархические
- Если ваши данные масштабируются более чем на 100 000 одновременных подключений
- Если вам нужен более точный лимит расходов и база данных, которая взимает плату в первую очередь за 1, это PicCollage, Fabulous, Shazam и Skyscanner, и мы все можем согласиться, что они работают успешно.
В заключение, у моделей базы данных Firebase все идет хорошо. Firebase в реальном времени успешно работает уже много лет, и в прошлом году с выпуском бета-версии Cloud Firestore разработчики мобильных приложений и компании, занимающиеся разработкой приложений, ожидают лучших результатов.