Azure Blob 与 Heroku 类型存储

Azure Blob 与 Heroku 类型存储

我正在制作一个应用程序,它将接收图像,然后需要使用 Nodejs 将它们存储在 SQL DB 中。我需要存储大量图像并对其进行大量查询(我需要查询数据库以查看该图像是否在其中)

据我所知,最好将文件保存在文件系统中,并将路径放在数据库中(更便宜)。

我学会了使用 Heroku 和 Mlab 进行开发并将 URL 保存到我的数据库中,这将是我第一次使用文件系统。

我读过关于 Azure 存储选项的文章,一位销售代表告诉我,我可以使用他们的 Blob 服务,这很合适。但似乎使用他们的服务需要学习很多东西。我之前在另一个项目中尝试过 Azure 和 AWS,与仅使用 git 部署到 Heroku 相比,使用它们似乎更加复杂,只需选择要使用哪些服务和内容以及如何使用它们。

但似乎使用 azure blob 的价格比使用 Heroku 等要便宜很多,尽管我很难理解所有这些服务(Heroku DYNOS......)的定价。

就我所知,使用 Heroku,我只需制作我的应用程序,使用 fs 模块将文件上传到服务器,然后将该路径保存到我的数据库中。而要使用 azure blob,我还必须学习如何使用 azures API 并将图像存储在 blob 中。我已阅读他们的文档: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-nodejs-v10 并且无法确切地找到如何知道文件在 blob 上的位置,以便我可以将其保存到我的数据库中,然后如何检索该文件。

我的问题如下:

  1. 我的最佳选择(最便宜最有效)是使用 azure 和 azure blob 还是有更好的选择来满足我的需要?
  2. 是否正如我所看到的,使用 Azure 存储和 Blob 时还有另一层复杂性,而这是使用 Azure 和 AWS 时的常态吗(这些是云服务吗,而其他的不是?Heroku 也在他们的网页上提到了云,但这些似乎不同)????
  3. 是否值得花费精力去了解 blob,还是最好先使用一些更简单的东西来开始?
  4. 将图像保存到 cloudinary 并将 URL 保存到我的 SQL DB 是否可行,或者这是否太昂贵或效率低下???

我在这里先向您的帮助表示感谢

答案1

我还没有尝试过 Heroku,但我可以对 Azure Blobstorage 发表评论。

我认为最佳做法是:

将图像存储到 blobstorages 中,使用 匿名只读访问容器并将 URL 保存到数据库。

由于您只有 URL,因此您的应用程序将从 Azure 下载图像,从而节省服务器的流量。生成随机字符串名称而不是每个图像的 (1,2,3,... 或 a,b,c,... 或 john,doe,jane,...) 将限制用户访问未经授权的图像。


在 Azure 上创建 Blob 存储非常简单。

  1. 创建资源 (+)
  2. 选择存储帐户
  3. 创造

你会得到存储帐户名称钥匙访问密钥标签。


在存储帐户中您将看到:Blob、文件、表、队列。

转至 Blob:

  1. 创建新容器
  2. 注意公共访问级别对于容器(我推荐容器)
  3. 单击容器属性(更多选项图标...)并获取容器 URL

正如在您阅读的文档,你需要定义

  • 存储帐户名称
  • 钥匙
  • 容器 URL

在您的代码中并使用它们。


答案2

据我所知,使用 Heroku,我可以制作我的应用程序,使用 fs 模块将文件上传到服务器,然后将该路径保存到我的数据库中。

可以,但这些文件会在 a) 下次部署时和 b) 每天在 dynos 重启时消失。Heroku 上的文件系统是临时的 - 对其所做的更改不是永久的

如果您需要用户上传(或任何其他类型的 Git 存储库中不存在的永久文件),则需要某种非 Heroku 存储(如 Azure 或 AWS 的 S3)来存储它们。

答案3

  1. Azure 存储 Blob 是 Azure 中最便宜的图像存储选项
  2. 您真的不想保存任何本地磁盘或在数据库中存储图像(谁会这样做?)
  3. Blob 存储非常简单
  4. 不知道什么是 cloudinary,但如果你将图像存储在 blob 中,你仍然需要知道图像的 URL,因此你可能必须将其保存在某个地方

相关内容