2014-10-08 62 views
0

我正在构建一个需要存储大量(250,000个)小文件(2MB到10MB)文件的应用程序。我想为此使用Azure存储,因为其他相关系统都在Azure上。每个文件都有一个唯一的名字(可能是GUID)。我有点不确定BLOB是如何对应于文件的。既然我知道每个文件都将被唯一命名,我可以将每个blob的一个文件存储在一个容器中吗?在Azure存储中存储大量文件

围绕着Azure存储概念,我仍然抱有很高的期望,所以很抱歉,如果这太令人生气了。

回答

3

您可以将所有文件完全存储在一个容器中。对容器中的斑点数量没有限制,但存储帐户仅限于 100TB 500TB。

每个blob都有自己的存储分区,所以这意味着您的文件将以可扩展的方式存储在潜在的多个服务器中。

将所有内容存储在一个容器中的唯一缺点是在一个目录中列出文件名很困难。另外,像日期这样的东西很难清除。如果您需要清除您的斑点,请考虑考虑可以一次清除容器的存储策略。

HTH

+0

每个文件都有一个数据库中的条目,它的文件名,所以我不认为我需要担心列表。我认为这也应该处理删除问题,因为我认为我可以删除一个blob,如果我有它的名字。 – 2014-10-08 15:12:40

+0

正确,你只是一次删除一个文件 – Igorek 2014-10-08 19:00:14

+0

嘿@Igorek - 希望你不介意 - 我对你的答案做了一个小小的修改:Azure存储账户现在增加到500TB。 :) – 2014-10-08 19:44:39

2

我创建了一个类似的Blob存储库(2.6毫米的文件/ 3.9TB),所以我想我的经历可能是你的一个很好的代表。但是,我应该说,这些文件中至少有一半是1K或更少,所以我的发现不会完全匹配。

无论如何,我的问题和你一样:容器/文件夹组织)是否会影响检索速度?然而,我的测试表明,无论我如何组织文件,检索速度都几乎相同。

对于您的情况,我只是简单地使用一个没有底层“文件夹”结构的容器,特别是因为您要使用GUID作为文件名。你永远不会想列出所有的250K文件(除非你想做一个完整的“目录”扫描),所以扁平化的组织方案似乎是最好的。

如果您想要定期滚动文件的子集(即在特定天数之后),则选择替代方案(具有多个容器和/或文件夹)的唯一原因是。