Я делаю приложение, которое будет получать изображения, а затем должно сохранять их в SQL БД с использованием Nodejs. Мне нужно хранить много изображений и часто запрашивать их (мне нужно запросить БД, чтобы увидеть, есть ли там это изображение)
Из того, что я прочитал, лучше сохранить файлы в файловую систему и поместите путь в БД (дешевле).
Я научился разрабатывать с помощью Heroku и Mlab и сохранять URL-адреса в моей БД, это будет мой первый раз, когда я использую файловую систему.
Я читал о вариантах хранения в лазурном стиле. и представитель сказал мне, что я могу использовать их службы BLOB-объектов, и это было бы хорошо. Но похоже, что для использования их служб нужно много учиться. Раньше я пробовал azure и aws для другого проекта, и все кажется более сложным с ними по сравнению с простым использованием git для развертывания на heroku, просто выбирая, какие службы и прочее использовать и как их использовать.
Но похоже, что t цена при использовании лазурных капель НАМНОГО дешевле, чем при использовании, например, Heroku, хотя мне трудно понять даже цены на все эти услуги (Heroku DYNOS ...)
Дело в том, что, насколько я могу судить, с Heroku я могу просто создать свое приложение, загрузить файлы на сервер используя модуль fs, а затем сохраните этот путь в моей БД. Принимая во внимание, что для использования лазурных BLOB-объектов мне также нужно научиться использовать Azure API и хранить изображение в BLOB-объекте. Я прочитал их документацию: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-nodejs-v10 и не могу найти точно, как я узнаю местоположение файла в большом двоичном объекте, чтобы сохранить его в своей базе данных, а затем как получить этот файл.
Мои вопросы следующие:
Заранее спасибо за помощь
Я не пробовал Heroku, но могу прокомментировать Azure Blobstorage.
Лучшая практика, которую я вижу:
Сохранение изображений в blobstorages с анонимный доступ только для чтения к контейнеру и сохранение URL-адресов в базе данных.
Поскольку у вас есть только URL-адреса, ваше приложение будет загружать изображения из Azure, сохраняя трафик с вашего сервера. Создание случайных строковых имен вместо (1,2,3, ... или a, b, c, ... или john, doe, jane, ...) для каждого изображения ограничит пользователя доступ к неавторизованным изображениям.
Создать хранилище BLOB-объектов в Azure очень просто.
Вы получите Имя учетной записи хранения и ключ из ключей доступа ].
В учетной записи хранения вы увидите: BLOB-объекты, файлы, таблицы, очереди.
Перейти к BLOB-объектам:
Как упоминалось в документах, которые вы читаете , вам нужно будет определить
в вашем коде и использовать их.
Дело в том, что насколько я могу судить с помощью Heroku, я могу просто создать свое приложение, загрузить файлы на сервер с помощью модуля fs и затем сохранить этот путь в моей БД.
Вы можете, но эти файлы исчезнут а) при следующем развертывании и б) один раз в день при перезапуске динамометрического стенда. Файловая система на Heroku недолговечна - внесенные в нее изменения не постоянные .
Если вам нужны пользовательские загрузки (или любые другие постоянные файлы, которых нет в вашем репозитории Git), вам необходимо какое-то хранилище вне Heroku, такое как Azure или AWS S3 для их хранения.