Надежный способ подсчета общего используемого пространства хранилища firebase на пользователя - PullRequest
0 голосов
/ 12 июля 2020

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

Основные требования:

  • он должен быть стабильным : он должен гарантировать подсчет каждого загруженного файла
  • он должен быть масштабируемым : я не могу прочитать «все сохраненные файлы» для расчета размер сразу, так как количество файлов может быть огромным
  • это должно быть безопасное : я не могу полагаться на браузер, расчеты должны выполняться на сервере.

Пока что подход таков:

  1. пользователь моего веб-приложения может загружать несколько файлов
  2. эти файлы загружаются с помощью sdk веб-клиента firebase
  3. на сервер, который я слушаю functions.storage.object().onFinalize(), чтобы получить размер файла для каждого файла
  4. , затем я обновляю специальный документ в firestore, чтобы добавить новый размер к общему количеству (назовем его totalStorageSizeDoc)

Этот подход касается безопасности и масштабируемости, но проблема Я вижу, что когда пользователь загружает кучу достаточно маленьких файлов, это может легко вызвать множество functions.storage.object().onFinalize() в течение 1 секунды, что является «не жестким, но все же» пределом для операций записи в firestore. На этом этапе записи в totalStorageSizeDoc также будут выполняться слишком быстро с риском отклонения некоторых из этих записей.

Есть ли способ легко поставить в очередь записи из onFinalize(), чтобы гарантировать totalStorageSizeDoc не завалило? Или мне следует использовать совершенно другой подход? Может быть, есть какие-нибудь передовые методы подсчета использованного размера хранилища, которые я пропустил?

Любые советы очень приветствуются.

1 Ответ

1 голос
/ 12 июля 2020

Проще всего было бы включить повторных попыток для вашей функции, чтобы в случае сбоя по какой-либо причине (например, превышения некоторого лимита) система просто повторяла попытку, пока не добилась успеха.

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