#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