在Azure BLOB或CosmosDB上以varbinaryblob形式存储超过500 k +图像?

时间:2019-06-27 15:00:07

标签: azure azure-cosmosdb azure-storage-blobs

我在UWP应用程序上工作,该应用程序从Azure下载图像。尽管图像大小小于2 MB,但其数量超过500 k。当前,映像以varbinary的形式存储在Azure SQL中,这在数据库实例上消耗了250 GB,我们需要将其移动到延迟少,占用空间少的非关系数据存储中。这里哪个选项(Azure BLOB或Cosmos DB)更合适。我们现在使用唯一的密钥从连接到Azure SQL的REST API下载图像,并且也希望对新的数据存储也采用类似的方法。听到使用这些存储库处理大量图像的人的消息,这将非常高兴?

2 个答案:

答案 0 :(得分:4)

“更好”是一个见解。但是请考虑图像不是元数据-它们只是二进制文件,它往往是Azure存储(blob)的领域。 SQL数据库和Cosmos DB都有特定的限制,您可能会发现尝试存储如此数量的二进制数据超出了这些限制。

进一步:将二进制数据(例如图像)存储在SQL DB或Cosmos DB中后,您别无选择,只能以编程方式检索所述内容(并受您在数据库/集合中设置的性能约束的约束) 。相比之下,Azure存储具有自己独立的扩展目标,可以直接访问对象(无论是公共的还是私有的+ SAS),并可以通过CDN进行缓存。

最终,这将取决于您为应用选择的存储体系结构,但希望此信息对您有所帮助。

答案 1 :(得分:0)

在Cosmos DB中花费不那么明显的另一件事要注意,目前cosmos中每GB的存储最低为40RU / s,因此,如果您存储大量图像,那么您会发现最低的缩放设置可能会很高,可能很快就会变得昂贵。

按照David的建议,我会将文件存储在Blob存储中,然后将文件URL和Ids一起存储为Cosmos中的键值对。这将使Cosmos变得相当小巧,高效且便宜,但仍使您可以使用索引。