Есть ли в методе DatabaseReference setValue () максимальное количество дочерних элементов, которые можно записать за один вызов? - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь записать данные в базу данных Firebase в реальном времени из приложения AndroidStudio. Мне нужно написать Java HashMap для разных потомков, но я заметил, что когда размер HashMap превышает 120k, HashMap не сохраняется в базе данных реального времени (но ошибка не отображается). Вместо этого, если размер меньше 120 КБ, все работает нормально, и каждая запись HashMap становится записью соответствующего дочернего элемента в базе данных. Это проблема размера? Как я могу это решить?

Это код, который я использую:

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("parent");
for(int i=0;i<myMaps.length;i++){
    myRef.child("child"+i).setValue(myMaps[i]);
}

РЕДАКТИРОВАТЬ: Я думаю, что это не вопрос веса. Примеры:
myMaps [x] с 127 тыс. Записей весит 5,5 МБ ==> Не записано
myMaps [у] с 119 тыс. Записей весит 9,7 МБ ==> Написано
Также каждый HashMap весит менее 11 МБ.

1 Ответ

0 голосов
/ 20 марта 2020

Согласно документации :

Размер одного запроса на запись в базу данных

Ограничение: 256 МБ от REST API; 16 МБ из SDK.

Примечания. Общий объем данных в каждой операции записи должен быть менее 256 МБ. Для многопутевых обновлений применяется одно и то же ограничение размера.

Вероятно, вы превышаете этот предел.

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

...