Экономия полосы пропускания для базы данных Firebase Realtime за счет включения офлайн-поддержки

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


person Peter Fortuin    schedule 19.06.2017    source источник


Ответы (2)


Если вы используете FirebaseDatabase.getInstance().setPersistenceEnabled(true);, это означает, что вы сможете запрашивать свою базу данных, даже если вы не в сети. Это происходит потому, что Firebase создает локальную копию вашей базы данных. Каждое изменение, которое вносится, пока вы не в сети, будет обновляться на серверах Firebase после того, как вы снова подключитесь к сети. Таким образом, этот параметр не используется для экономии трафика, он предназначен для включения автономных возможностей.

Чтобы быть более ясным, каждый клиент, который использует базу данных Firebase и использует setPersistenceEnabled(true), поддерживает свою собственную внутреннюю (локальную) версию базы данных. Когда данные обновляются, они сначала записываются в эту локальную версию базы данных.

В результате все записи в Firebase немедленно запускают локальные события, прежде чем какие-либо данные будут записаны на сервер. Это означает, что приложение будет продолжать реагировать независимо от подключения к Интернету.

После восстановления подключения к Интернету вы получите соответствующее текущее состояние сервера. Клиент Firebase synchronizes, передающий данные с серверов Firebase и других клиентов, использующих ту же базу данных.

Также следует помнить, что Firebase автоматически управляет connection state, чтобы уменьшить полосу пропускания и использование батареи. Когда клиент не имеет active listeners, ожидающих операций записи или onDisconnect и не отключен явным образом методом goOffline, Firebase закрывает соединение через 60 секунд бездействия.

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

Надеюсь, это поможет.

person Alex Mamo    schedule 19.06.2017
comment
Это вообще не ответ на вопрос. - person Peter Fortuin; 21.06.2017

Сегодня я разговаривал с гуглером в Google Next Amsterdam, и он подтвердил мою теорию. Если в вашем приложении включена автономная поддержка, и вы переходите из автономного режима в онлайн-состояние, Firebase синхронизирует вашу базу данных самым разумным из возможных способов. Это означает, что, если это возможно, он отправит только измененные значения. Таким образом, включение поддержки в автономном режиме действительно экономит вашу пропускную способность.

person Peter Fortuin    schedule 21.06.2017
comment
По-моему, то, что вы только что сказали, Firebase will sync your database in the smartest way possible., правильно. Но, как я упоминал ранее, когда вы снова подключаетесь к сети, Firebase servers обновляются только изменения, внесенные в то время, когда вы были офлайн. Но говорить о том, что давайте перейдем в автономный режим, чтобы сохранить ту же полосу пропускания, на мой взгляд, неверно: | - person Alex Mamo; 21.06.2017
comment
Я согласен с тем, что вам не следует отключаться от сети для экономии трафика. - person Peter Fortuin; 21.06.2017
comment
Пожалуйста, посмотрите мой обновленный ответ. Надеюсь, я достаточно ясно выразился. - person Alex Mamo; 21.06.2017