Поиск по сайту:

Как работает база данных Firebase Realtime от Google?


Firebase – это набор серверных приложений от Google, предназначенный для упрощения работы с мобильными серверными приложениями. Хотя он предлагает множество функций, в основе лежит база данных Firebase Realtime, бессерверная база данных, которая может масштабироваться до миллионов пользователей.

Что такое Firebase?

Firebase — это целый набор продуктов, который предлагает множество функций, таких как упрощенная аутентификация, облачный хостинг, машинное обучение, аналитика и мониторинг сбоев. Однако служба, с которой все началось, — это база данных Firebase Realtime, база данных NoSQL, на которую клиенты могут подписываться через WebSockets.

Данные в реальном времени означают, что любые обновления, внесенные в базу данных, будут отправлены клиентским приложениям, подписанным на этот поток данных. Хорошим примером является приложение чата: новые сообщения, отправленные пользователем А, будут обновлять базу данных, а пользователям Б и В будут отправлены эти обновления, где их клиентские приложения будут отображать их как новое сообщение.

Конечно, это возможно и без Firebase — MongoDB может добиться того же эффекта, и RethinkDB построена вокруг этой концепции. Но это, безусловно, очень приятная функция, и в сочетании со всеми другими услугами, которые она предлагает, делает Firebase реальной альтернативой созданию собственного мобильного бэкэнда.

Что касается фактических данных, Firebase — это база данных хранилища документов, очень похожая на другие базы данных NoSQL, использующие эту модель, такие как MongoDB. Они оба не содержат схем, что позволяет хранить данные в любом формате, соответствующем вашим предпочтениям.

Данные в Firebase хранятся в одном большом дереве JSON. Каждая ветвь дерева может быть изменена по желанию, а изменения в определенных ветвях (таких как /users/anthony/) могут быть подписаны, что позволяет клиенту прослушивать обновления.

Например, в JS вы можете получить ссылку на определенное место в базе данных, например количество лайков для определенного сообщения. Затем вы можете вызвать ref.on() и передать ему функцию обратного вызова, которая будет запускаться всякий раз, когда клиенту Firebase отправляется обновление.

var LikesRef= firebase.database().ref('posts/' + postId + '/likes');
LikesRef.on('value', function(snapshot) {
  updateLikes(postElement, snapshot.val());
});

Конечно, вы также можете получить данные только один раз, если вам не нужна подписка в реальном времени.

Firebase, как правило, не так эффективен, как ваша собственная выделенная база данных, работающая на вашем собственном сервере, но ее должно быть более чем достаточно для большинства приложений. Если вам нужна производительность, но вы все еще хотите использовать платформу Firebase, вы можете заглянуть в Firestore — альтернативное решение для базы данных в наборе Firebase. Хотя обе по-прежнему являются базами данных документов, Firestore немного более структурирован. Вместо того, чтобы быть одним гигантским деревом JSON, Firestore хранит отдельные документы, которые могут иметь собственную структуру. Он по-прежнему способен выполнять обновления в реальном времени, но больше подходит для приложений, которым необходимо выполнять сложные запросы.

Firestore больше сравним с традиционной базой данных как услугой, такой как RDS AWS, хотя вам все равно вообще не нужно беспокоиться о серверах. Если вы хотите узнать об этом больше, вы можете прочитать обзор Google о различиях между двумя предложениями.

Сколько это стоит?

Firebase имеет довольно щедрый бесплатный уровень для разработки и небольших приложений. Если у вас менее 100 одновременных  пользователей и менее 50 000/20 000 операций чтения/записи в день, вы можете использовать Firebase бесплатно.

Как только вы пройдете это, цена будет платной по мере использования. Вы можете использовать их калькулятор, чтобы определить, сколько вы будете платить, в зависимости от вашего использования. Цены основаны на хранении и передаче ГБ в месяц для Firebase, а также на операции чтения/записи для Firestore.

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