База данных Firebase в реальном времени с высоким потреблением данных - PullRequest
1 голос
/ 20 марта 2019

Я единственный реальный пользователь (сейчас тестирующий) для моей базы данных, и вот мои данные, загруженные из моей базы данных, так как я установил FirebaseDatabase.getInstance (). SetPersistenceEnabled (true);

12 марта (КРАСНЫЕ ЛИНИИ) - Около 3 МБ / день

А вот размер моей базы данных: Что составляет около 80ko.

enter image description here

Данные, к которым у меня есть доступ из моей учетной записи, составляют около 1/4, поэтому 20ko.

Поскольку я использовал FirebaseDatabase.getInstance (). SetPersistenceEnabled (true);, я не совсем понимаю, как я могу загрузить примерно 150 раз за один день все данные, к которым у меня есть доступ. И я не очень много отправляю и удаляю много.

Так как же получается такое большое потребление и как я могу это решить? Я думал об использовании внутренней базы данных SQL, но не вижу смысла, поскольку firebase может легко хранить все мои данные в моей дисковой памяти. Более того, я думаю, что для проверки загруженных данных слушатель по-прежнему проверяет все данные, если что-то изменилось ... поэтому я не думаю, что это поможет.

Действительно ли FirebaseDatabase.getInstance (). SetPersistenceEnabled (true) не уменьшает количество ошибок и все же загружает то, что предварительно загружается?

Если один пользователь использует около 2 МБ / день, это будет 1 ГБ / 500 пользователей => 1 $, что довольно дорого ...

Что мне делать?

РЕДАКТИРОВАТЬ:

Я только что сделал тест. Я очистил все хранилище приложения и загрузил все данные, к которым я получил доступ (около 20ko)

Вот результат:

enter image description here

393ko ... это очень странно. А потом я снова проверил данные в графике, и сегодня я скачал 1 МБ.

enter image description here

Я не вижу никаких объяснений ... Единственное, что я вижу, это то, что в качестве примера я не всегда использую одну и ту же ссылку, когда пытаюсь найти одну и ту же вещь в базе данных. Например, в одном упражнении, если мне нужно получить имя пользователя, которое я использую

это:

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 не знает, что я ищу те же данные, что и другое имя переменной для справки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...