Nik*_*Nik 14 sql azure azure-storage azure-storage-blobs azure-sql-database
我正在编写一个新的应用程序,应用程序中的某些实体有图像(仅用于网站上的显示目的).
我想稍后在azure上托管我的应用程序,我想弄清楚使用Azure Blob存储来存储所有图像还是仅将它们存储在数据库中会更好?
在网站上加载图像时,有什么更好的性能?
有人可以向我解释这两种解决方案的好处,以便我能够下定决心吗?
Dav*_*gon 18
如何设计数据库存储方案是主观的,但在您的方案中需要考虑客观事项.我会解决这些问题,并将"我应该选择哪个"留给你......
Azure存储blob专为批量"块"数据(如文档,图像等)而设计.像SQL数据库这样的东西是为元数据设计的(你搜索/索引/查询的东西).
一切都可以通过SQL数据库完成,你只需要担心SQL查询(听起来就像你已经熟悉的那样).SQL Server(和SQL数据库)始终能够通过其BLOB类型存储二进制内容.
虽然您可以将图像存储在SQL数据库中,但您会发现数据库大小会大大增加,而不仅仅是存储可查询的元数据.虽然SQL数据库服务允许您扩展存储,但您可以以比SQL数据库服务更低的成本找到更大规模的blob存储(高达500TB).如果在VM中运行SQL Server,那么您仍将拥有与blob等效的存储成本(附加磁盘)以及VM成本.
存储blob本身不提供查询语言 - 您需要知道容器和/或blob名称.因此,为了获得最佳搜索效果,您需要一个带有元数据的可查询数据库(例如SQL数据库).
如果将图像存储在blob中,并通过数据库中的URI引用它们,则可以查询数据库,查找图像的URI,然后适当地读取blob存储.
另请注意:使用blob,您将能够提供对浏览器或应用程序的直接图像URI访问(即使blob标记为私有),这样您就可以在交付二进制文件时绕过您的应用层(图像)内容给最终用户.Blob也可以缓存在CDN中,而SQL数据库则无法对其进行缓存.
您选择的最终取决于您; 我只是提供了使用每个原因的客观原因.
BLOB便宜得多.
你也可能像BLOB一样快速转移.现在初始查找可能会更快一点,但对于大图像我认为BLOB会赢.SQL很简单,没有针对大的东西进行优化,BLOB就是.
而且你可以让SQL免费提供简短的东西.