Azure Blob存储限制和筛选

13

多租户应用的Azure存储。我们正在开发一款在Azure上的多租户应用程序,大约有10,000个租户,每个租户需要约100 GB到1 TB的数据存储,该应用程序需要单独维护每个租户的文档、二进制内容以及元数据。我们想采用Azure块Blob存储来存储数据。由于要为每个租户单独维护数据,因此我们考虑了以下方法。

  • 为每个租户创建一个单独的存储帐户
  • 这有助于根据租户使用情况进行维护,并对计费也有帮助
  • 在每个存储帐户中创建一个单独的容器来根据类别进行分离
  • 在块Blob存储中存储文档以及元数据。

我们对于我们的方案有以下几点疑问:

  1. 把文档或二进制内容和元数据一起存储在块Blob中是个好主意吗?还是有更好的方式实现(比如使用SQL Azure存储元数据和Blob存储内容或其他更好的方式)?
  2. 如何查询具有一些元数据过滤条件的数据?即检索出所有元数据1=value1且元数据2=value2的Blob。
  3. 为每个租户创建一个单独的存储帐户是否是个好主意?
    a. 如果不是,那么我们可以通过什么模型在Azure存储中存储特定于租户的数据,并使应用程序能够有效地使用它们?
  4. 在可扩展性和高可用性方面,在读/写Blob存储的数据请求数量或任何其他限制上是否有带宽?
  5. 根据Azure的定价模型,他们按存储收费,即前1 TB 0.095美元/ GB,其后49 TB 0.08美元/ GB。这些费用是适用于每个存储帐户还是适用于每个订阅?
    a. 同样地,交易成本适用于每个存储帐户还是适用于每个订阅?
1个回答

15
关于问题1和2,您不能在Blob存储中对元数据进行查询。因此,我认为最好的选择是使用SQL Azure或Azure表存储,因为它们都具有查询功能。由于您将存储大量的Blob(因此还有更多的元数据),我更倾向于表存储,但这需要特殊的设计考虑,例如适当的分区。
关于问题3,我能想到三个理由为什么每个租户都有一个单独的存储帐户是一个好主意:
1. 它简化了计费。 2. 它将帮助您保持可伸缩性目标。 3. 由于您提到每个租户可能最多存储1 TB的数据,鉴于当前的存储帐户限制为200 TB,您每个存储帐户只能维护最多200个租户。之后,您需要找到另一个存储帐户并开始在那里存储数据。
总而言之,每个租户都有一个单独的存储帐户是一个更优雅的解决方案。挑战在于将默认限制从20个存储帐户/订阅增加到所需数量。您需要与支持团队进行沟通。
关于问题4,就可扩展性和高可用性而言,在读写Blob存储中的数据请求数量或是否存在带宽等限制是有的。但是,这些限制取决于您选择使用的服务层和定价层。建议您查看Azure的文档以了解更多详细信息。

是的,请阅读来自Windows Azure Blob Storage团队的可扩展性目标博客:http://blogs.msdn.com/b/windowsazurestorage/archive/2010/05/10/windows-azure-storage-abstractions-and-their-scalability-targets.aspx

根据Azure定价模型,他们按照存储的梯度收费,即第1TB每GB $0.095,接下来49TB每GB $0.08。这些费用是针对每个存储帐户还是每个订阅应用的? a. 同样地,交易成本适用于每个存储账户还是每个订阅?

不确定,但我猜想是针对每个存储帐户。您可能需要联系支持部门了解更多信息。

希望这可以帮到您。


谢谢Gaurav。我只想澄清几件事:首先,由于您更倾向于表存储,我猜这是用于元数据,而内容仍将进入Blob,对吗?其次,您提到存储账户限制为200 TB,您是指100 TB,对吗?因为我没有在任何地方找到200 TB。 - Hitesh
1
没错。实际上,内容将存储在 Blob 存储中,但您想要查询的元数据将存储在表存储(或 SQL Azure)中,因为 Blob 存储不支持查询。请参见此处有关存储帐户 200 TB 限制的信息:http://blogs.msdn.com/b/windowsazurestorage/archive/2012/11/04/windows-azure-s-flat-network-storage-and-2012-scalability-targets.aspx。200 TB 限制在可扩展性目标部分提到,但仅适用于 2012 年 6 月 7 日之后创建的存储帐户。 - Gaurav Mantri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接