Multi-Tenancy 应用程序的Azure存储。我们正在努力在Azure上开发 Multi-Tenancy 应用程序,大约有10,000个租户,每个租户需要大约100 GB到1 TB的数据存储。该应用程序将分别维护每个租户的文档和二进制内容以及元数据。我们正在考虑使用Azure Block Blob存储来存储数据。由于要求将每个租户的数据分开保存,因此我们遇到了以下方法。

  • 为每个租户创建一个单独的存储帐户
  • 有助于明智地维护租户使用,这又有助于计费以及
  • 在每个存储帐户中创建一个单独的容器以进行隔离
    基于类别
  • 将文档和元数据一起存储在块Blob存储中。

  • 关于我们的方法,我们有以下疑问:
  • 将文档或二进制内容存储在块blob中是个好主意吗
    连同元数据?还是有更好的方法来实现它
    (可能将SQL Azure用于元数据,将blob用于内容,或者
    更好的)?
  • 如何使用元数据的某些过滤条件查询数据?即检索所有blob,其中metadat1 = value1和metas2 = value2
  • 为每个租户创建一个单独的存储帐户是个好主意吗?
    一种。如果没有,那么我们可以通过哪种模型将租户特定的数据存储到Azure存储中,应用程序就可以有效地使用它们?
  • 在可伸缩性和高可用性的情况下,对Blob存储上的数据进行读/写的请求数量是否有带宽或其他限制?
  • 根据 azure 的定价模型,他们对存储进行明智的收费,即第一个1 TB $ 0.095/GB,第二个49 TB $ 0.08/GB。此费用是针对每个存储帐户还是针对每个订阅应用?
    一种。同样,交易费用适用于每个存储帐户还是每个订阅?
  • 最佳答案



    要回答1和2,您不能查询Blob存储中的元数据。因此,我猜您最好的选择是使用SQL Azure或Azure表存储,因为它们都具有查询功能。鉴于您将存储大量的Blob(并因此存储了更多的元数据),我更倾向于表存储,但这需要特殊的设计注意事项,例如适当的分区。



    我可以想到三个原因,为什么每个租户有一个单独的存储帐户是一个好主意:

  • 它简化了您的账单。
  • 它将帮助您维护可扩展性目标。
  • 由于您提到每个租户都可能存储多达1 TB的数据,在当前存储帐户限制为200 TB的情况下,每个存储帐户最多只能维护200个租户。之后,您将需要找到另一个存储帐户并开始在其中存储数据。

  • 总而言之,这是一个非常优雅的解决方案,可以保留单独的存储帐户/租户。面临的挑战是使默认限制从20个存储帐户/订阅增加。您需要与支持人员聊天。



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



    对此不确定,但我猜想它是每个存储帐户的价格。您可能需要联系支持部门。

    希望这可以帮助。

    10-08 06:42
    查看更多