2

我认为我们在 SAAS 系统中使用 Azure 存储的方式有点错误。我们为每个客户创建了一个存储帐户(Securtiy 是主要考虑因素)和每个系统区域的容器,例如车辆、工作等

进一步阅读后,似乎建议我们应该为所有客户使用一个帐户。每个客户端都应该有一个容器(这样我们就可以通过编程方式创建它),然后我们对其进行保护。然后文件应该只使用“虚拟”文件夹结构来构建,例如称为“客户端 A”的容器。然后工作文件(在系统的工作区域中)存储为 Work/Jobs/{entity id}/blah.pdf。这听起来合理吗?

如果是这样,我们现在有大约 10 个帐户需要重组。是否有任何工具可以让我们轻松地将一个帐户内容复制到另一个容器帐户?我很感激我们可能无法在帐户之间移动文件(因为我们很久以前就设置了它们,所以不能使用本机复制功能)所以我猜是某种复制。所有帐户都有 GB 的文件。

4

2 回答 2

5

为每个客户端保留不同的存储帐户可能不是一个坏主意。这样做的好处(对我来说)是:

  1. 您提到的更好的安全性。
  2. 您将能够获得更好的吞吐量/客户端,因为每个客户端都有自己的存储帐户。如果您为所有客户端保留一个存储帐户,并且如果一个客户端开始严重访问该帐户,则其他客户端将受到影响。
  3. 更好的可扩展性。每个存储帐户最多可容纳 200 TB 的数据。因此,如果您只保留一个存储帐户并假设每个客户端消耗 100 GB 数据,那么您将只能容纳 2000 个客户端(我希望我的数学是正确的 :))。使用个人存储帐户,您将不会受到这种意义上的限制。

也有一些缺点。他们之中有一些是:

  1. 管理将是一场噩梦。假设您有 2000 个客户,那么您最终将管理 2000 个存储帐户。
  2. 您可能会受到 Windows Azure 的限制。目前,默认情况下,每个订阅大约可以获得 10 或 20 个存储帐户,您需要联系支持人员手动提高该限制。他们可以为您做到这一点,但我想您会希望这是一种自助服务模式,您可以在不联系支持人员的情况下创建任意数量的存储帐户。

现在谈到您关于工具的问题,您可以自己编写一些利用 Copy Blob 功能的东西。此功能允许您跨存储帐户异步复制 blob 数据。基本上这就是你要做的是:

  1. 首先为目标存储帐户中的每个客户端创建一个 Blob 容器。
  2. 枚举源存储帐户中的所有 blob 容器。
  3. 对于源存储帐户中的每个 blob 容器,枚举 blob。
  4. 将每个 blob 异步复制到客户端 blob 容器中的目标存储帐户。

如果您是 PowerShell 粉丝,您可以查看包含此功能的 Cerebrata 的 Azure 管理 Cmdlet ( http://www.cerebrata.com/Products/AzureManagementCmdlets )。我也可以推荐 Cerebrata 的 Azure Management Studio,但我还没有尝试过这个功能 [披露:我是 Cerebrata 团队的开发人员之一]。

希望这可以帮助。

于 2013-01-24T13:32:33.337 回答
2

添加到 Gaurav Mantri 答案...

您可以为客户提供共享存储帐户,并使用共享访问签名 (SAS) 来限制对特定容器或 blob(以及表和队列)的访问... http://msdn.microsoft.com/en-us/库/windowsazure/hh508996.aspx

于 2013-01-24T14:33:25.227 回答