Я единственный реальный пользователь (сейчас тестирующий) для моей базы данных, и вот мои данные, загруженные из моей базы данных, так как я установил FirebaseDatabase.getInstance (). SetPersistenceEnabled (true);
12 марта (КРАСНЫЕ ЛИНИИ) - Около 3 МБ / день
А вот размер моей базы данных: Что составляет около 80ko.
Данные, к которым у меня есть доступ из моей учетной записи, составляют около 1/4, поэтому 20ko.
Поскольку я использовал FirebaseDatabase.getInstance (). SetPersistenceEnabled (true);, я не совсем понимаю, как я могу загрузить примерно 150 раз за один день все данные, к которым у меня есть доступ. И я не очень много отправляю и удаляю много.
Так как же получается такое большое потребление и как я могу это решить? Я думал об использовании внутренней базы данных SQL, но не вижу смысла, поскольку firebase может легко хранить все мои данные в моей дисковой памяти. Более того, я думаю, что для проверки загруженных данных слушатель по-прежнему проверяет все данные, если что-то изменилось ... поэтому я не думаю, что это поможет.
Действительно ли FirebaseDatabase.getInstance (). SetPersistenceEnabled (true) не уменьшает количество ошибок и все же загружает то, что предварительно загружается?
Если один пользователь использует около 2 МБ / день, это будет 1 ГБ / 500 пользователей => 1 $, что довольно дорого ...
Что мне делать?
РЕДАКТИРОВАТЬ:
Я только что сделал тест. Я очистил все хранилище приложения и загрузил все данные, к которым я получил доступ (около 20ko)
Вот результат:
393ko ... это очень странно. А потом я снова проверил данные в графике, и сегодня я скачал 1 МБ.
Я не вижу никаких объяснений ... Единственное, что я вижу, это то, что в качестве примера я не всегда использую одну и ту же ссылку, когда пытаюсь найти одну и ту же вещь в базе данных.
Например, в одном упражнении, если мне нужно получить имя пользователя, которое я использую
это:
Private DatabaseReference UserRef;
UserRef = FirebaseDatabase.getInstance().getReference().child("Users");
UserRef.child(iD).child("name").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
String name = dataSnapshot.getValue().toString(); //do some with name
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
А в другом упражнении я бы использовал ту же функцию, но я бы создал другую ссылку на нее. Возможно, это действительно имеет значение, и, возможно, он загружает дважды данные вместо одного, потому что firebase не знает, что я ищу те же данные, что и другое имя переменной для справки.