13

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

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

我们对我们的方法有以下疑问:

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

1 回答 1

15
  1. 将文档或二进制内容与元数据一起存储在块 blob 中是个好主意吗?或者有没有更好的方法来实现它(可能使用 SQL Azure 获取元数据,使用 blob 获取内容,或者更好)?
  2. 如何在元数据上查询具有某些过滤条件的数据?即检索 metadat1 = value1 和 metadata2=value2 的所有 blob

要回答 1 和 2,您无法查询 Blob 存储中的元数据。所以我想你最好的选择是使用 SQL Azure 或 Azure 表存储,因为它们都具有查询功能。鉴于您将存储大量 blob(因此甚至更多元数据),我更倾向于表存储,但这需要特殊的设计考虑,例如正确的分区。

为每个租户创建一个单独的存储帐户是个好主意吗?一个。如果不是,那么我们可以将租户特定数据存储在 Azure 存储中并且应用程序可以有效地使用它们的模型是什么?

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

  1. 它简化了您的计费。
  2. 它将帮助您维护可扩展性目标。
  3. 由于您提到每个租户最多可以存储 1 TB 的数据,鉴于当前的存储帐户限制为 200 TB,您最多只能为每个存储帐户维护 200 个租户。之后,您需要找到另一个存储帐户并开始在那里存储数据。

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

在可扩展性和高可用性的背景下,在 Blob 存储上读取/写入数据的请求数量是否存在带宽或任何其他限制?

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

根据 azure 定价模型,他们对存储按平板收费,即前 1 TB 0.095 美元/GB,接下来 49 TB 0.08 美元/GB。此费用是按存储帐户还是按订阅收费?一个。同样,交易成本适用于每个存储帐户还是每个订阅?

不确定这一点,但我猜它是每个存储帐户。您可能需要为此联系支持人员。

希望这可以帮助。

于 2013-01-18T11:33:04.320 回答