Добавление прослушивателя к значению, которое не существует

#java #android #firebase #firebase-realtime-database #listener

#java #Android #firebase #firebase-база данных в реальном времени #прослушиватель

Вопрос:

Недавно я запустил свое приложение для Android, которое использует базу данных Firebase в реальном времени, и неожиданно счет оказался очень огромным из-за загруженного в Firebase гигабайта, который составлял 1 доллар за гигабайт.
Мое приложение сейчас находится в режиме ожидания, и я пытаюсь исправить это, как только смогу. Раньше я не добавлял прослушивателей внизу и всегда добавлял в корне, что и вызывало это.

A

 mDatabaseReference.child("Data").child(ID).child("Details").addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                       //Do Something
                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                    }
                });
  

B

 mDatabaseReference.child("Data").child(ID).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        if(dataSnapshot.hasChild("Details")){
                        //Do Something
                        }
                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                    }
                });
  

Первый метод не выдает ошибку, если данные не существуют, но я хочу знать, выполняется ли их поиск в базе данных (что в сумме составляет загруженный ГБ) или нет?

Итак, есть ли какая-либо разница между A и B или лучше (если в сумме загружено не более ГБ)

Документация Google мало что говорит о прослушивателях. Часто ли добавляемые прослушиватели в моем приложении увеличивают объем загруженных ГБ? Также могу ли я что-нибудь сделать с протоколом подключения и SSL-шифрованием?

Комментарии:

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

Ответ №1:

Подразумевается, что добавление прослушивателя приведет к загрузке данных из базы данных реального времени (это единственный предусмотренный способ загрузки данных из вашего приложения с использованием SDK). Если данные уже кэшированы на клиенте, для ответа потребуется меньше данных.

A приводит к загрузке меньшего объема данных, чем B, поскольку A более специфичен, чем B. B приведет к загрузке всех дочерних элементов под ним.

Комментарии:

1. Я бы ожидал, что для получения ответа, в котором говорится, что данных нет, потребуется небольшая сумма затрат.

2. В общем, если у вас возникли проблемы с выставлением счетов, вам следует обратиться непосредственно в службу поддержки Firebase. firebase.google.com/support/contact