Ответ 1
Похоже, вы пытаетесь сохранить действительно большое количество информации с помощью mongoDb.
Я могу представить три различных варианта для вашего случая
Облачные сервисы
- Как уже комментируют другие люди, если сохраняемый вами файл является сжатым, даже если это небольшой файл, новое сжатие вам не поможет. В этом случае я рекомендую использовать какой-либо облачный веб-сервис, который уже оптимизирован для той информации, которую вы пытаетесь сохранить и извлечь, если это изображение, которое вы можете использовать Cloudinary, у которого также есть бесплатный сервис, чтобы вы могли проверить это.
Локальное хранение и сохранение маршрутов в БД
- Другим решением может быть сохранение закодированных данных в файле .txt, хранение их в облаке или в вашей файловой системе, а затем только сохранение маршрутизации в базе данных. Таким образом, вы не будете зависеть от скорости mongoDB для ее извлечения, но у вас будет хороший способ узнать, где находятся файлы.
Использование MongoDB и GridFS
- Таким образом, вы можете использовать определенный метод для хранения информации в MongoDB, который рекомендуется при работе с файлами размером 16 МБ. Официальная документация гласит:
Вместо того, чтобы хранить файл в одном документе, GridFS делит файл на части или части [1] и сохраняет каждый кусок как отдельный документ. По умолчанию GridFS использует размер чанка по умолчанию 255 кБ; то есть GridFS делит файл на фрагменты размером 255 кБ, за исключением последнего фрагмента.
И затем они говорят, в каких ситуациях вы можете использовать этот способ хранения информации:
В некоторых ситуациях хранение больших файлов может быть более эффективным в базе данных MongoDB, чем в файловой системе системного уровня.
- Если ваша файловая система ограничивает количество файлов в каталоге, вы можете использовать GridFS для хранения необходимого количества файлов.
- Если вы хотите получить доступ к информации из частей больших файлов без необходимости загрузки целых файлов в память, вы можете использовать GridFS для вызова разделов файлов, не считывая весь файл в память.
- Если вы хотите, чтобы ваши файлы и метаданные автоматически синхронизировались и были развернуты на нескольких системах и объектах, вы можете использовать GridFS. При использовании географически распределенных наборов реплик MongoDB может автоматически распространять файлы и их метаданные среди нескольких экземпляров и средств mongod.
Надеюсь, это было полезно :)