Моделирование данных для одновременной загрузки - PullRequest
0 голосов
/ 18 марта 2020

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

То, что у меня есть сейчас и что отлично работает для небольшого количества файлов:

Каждый файл имеет метаданные , ссылка на объект root и индекс файла. При загрузке вызывается функция onFinalize Firebase. Здесь, на /objects/{reference} документ получен. Этот документ содержит массив, в котором имя файла сохраняется для правильного индекса. Используя транзакцию, это работает. Если происходит сбой из-за параллелизма, он пытается снова.

Однако, если загружено много файлов, он сталкивается с ограничением в 5 попыток и выдает:

Error: 10 ABORTED: Too much contention on these documents. Please try again.

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

TL; DR: Для одного {reference} я хочу сохранить несколько index -> filename сразу из нескольких вызовы функций. Каков наилучший тип данных, модель данных для этого?

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