BLOB-объекты Azure против хранилища типов Heroku

Я делаю приложение, которое будет получать изображения, а затем должно сохранять их в 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 и не могу найти точно, как я узнаю местоположение файла в большом двоичном объекте, чтобы сохранить его в своей базе данных, а затем как получить этот файл.

Мои вопросы следующие:

  1. Мой лучший вариант (самый дешевый и эффективный) использовать лазурный и лазурный капли или есть лучшие варианты того, что мне нужно?
  2. Я считаю, что это еще один уровень сложности в использовании лазурное хранилище и большие двоичные объекты, и является ли это нормой при использовании лазурного и AWS (это облачные сервисы, а другие - нет? Heroku также упоминает облако на своей веб-странице, но они кажутся другими) ????
  3. Стоит ли потрудиться, чтобы узнать о каплях, или лучше просто использовать что-то более простое для начала?
  4. Сохраняет ли изображения в облачном хранилище? и сохранение URL-адресов в моей базе данных SQL жизнеспособно или это слишком дорого или неэффективно ???

Заранее спасибо за помощь

1
задан 23 January 2019 в 15:46
3 ответа

Я не пробовал Heroku, но могу прокомментировать Azure Blobstorage.

Лучшая практика, которую я вижу:

Сохранение изображений в blobstorages с анонимный доступ только для чтения к контейнеру и сохранение URL-адресов в базе данных.

Поскольку у вас есть только URL-адреса, ваше приложение будет загружать изображения из Azure, сохраняя трафик с вашего сервера. Создание случайных строковых имен вместо (1,2,3, ... или a, b, c, ... или john, doe, jane, ...) для каждого изображения ограничит пользователя доступ к неавторизованным изображениям.


Создать хранилище BLOB-объектов в Azure очень просто.

  1. Создать ресурс (+)
  2. Выбрать учетную запись хранения
  3. Создать

Вы получите Имя учетной записи хранения и ключ из ключей доступа ].


В учетной записи хранения вы увидите: BLOB-объекты, файлы, таблицы, очереди.

Перейти к BLOB-объектам:

  1. Создайте новый контейнер
  2. Будьте осторожны с Уровень общего доступа ] для контейнера (я бы порекомендовал контейнер)
  3. Щелкните свойства контейнера (значок дополнительных параметров ...) и получите URL-адрес контейнера .

Как упоминалось в документах, которые вы читаете , вам нужно будет определить

  • Имя учетной записи хранения
  • Ключ
  • URL-адрес контейнера

в вашем коде и использовать их.


0
ответ дан 3 December 2019 в 23:08

Дело в том, что насколько я могу судить с помощью Heroku, я могу просто создать свое приложение, загрузить файлы на сервер с помощью модуля fs и затем сохранить этот путь в моей БД.

Вы можете, но эти файлы исчезнут а) при следующем развертывании и б) один раз в день при перезапуске динамометрического стенда. Файловая система на Heroku недолговечна - внесенные в нее изменения не постоянные .

Если вам нужны пользовательские загрузки (или любые другие постоянные файлы, которых нет в вашем репозитории Git), вам необходимо какое-то хранилище вне Heroku, такое как Azure или AWS S3 для их хранения.

1
ответ дан 3 December 2019 в 23:08
  1. BLOB-объекты хранилища Azure - самый дешевый вариант хранения образов в Azure
  2. Вы действительно не хотите сохранять что-либо на локальном диске или хранить изображения в базе данных (кто, черт возьми, это делает?)
  3. Хранилище BLOB-объектов очень простое
  4. без понятия, что такое облачный, но вам все равно нужно знать URL-адрес изображения, если вы храните его в BLOB-объекте, поэтому вам, вероятно, придется где-то сохранить его
0
ответ дан 3 December 2019 в 23:08

Теги

Похожие вопросы