在Azure中管理多个租户存储的最有效方法?

欺骗3r

我们正在创建一个多租户应用程序,该应用程序必须在租户之间隔离数据。每个租户将保存各种文档,每个文档可以分为几个不同的文档类别。我们计划将Azure blob存储用于这些文档。但是,鉴于我们的用户群以及每个文档的数量和大小,我们不确定如何通过当前的Azure订阅来最佳地管理存储帐户。

这是一些要考虑的数字。拥有5,000个用户,每个用户每年27,000个8Mb文档,即每年总计1080TB。每个存储帐户的存储容器最大容量为500TB。

所以我的问题是,存储这些数据并保持在Azure限制范围内的最有效和最具成本效益的方法是什么?

我们考虑了以下几件事:

  1. 为每个客户端创建一个存储帐户。这不起作用,因为每个订阅只能有100个存储帐户(这是最理想的解决方案)。

  2. 为每个客户端创建一个Blob容器。一个存储帐户最多可以有500TB,因此这可能会起作用,除非最终我们必须拆分为其他存储帐户。我不确定如果最终用户在两个帐户中有数据,那将如何工作。可能会变得凌乱。

也许我们在这里错过了一些根本上简单的事情。

更新现在,我们的想法是将Azure表存储与每种文档类型的表一起使用。在每个表中,分区键将是租户的ID,行键将是文档ID。每行还将包含文档的元数据类型信息,以及链接到Blob本身的URI(或其他内容)。

停止捐款

并不是一个真正的答案,而是将其视为“值得思考的食物” :)。基本上,您的体系结构应基于以下事实:每个存储帐户都有一个帐户,scalability targets并且您的设计应不超过为应用程序维护高存储可用性的帐户

一些建议:

  • 首先创建多个存储帐户(首先说10)。我们称它们为Pods
  • 每个租户将获得其中一个吊舱。您可以随机选择一个Pod存储帐户,也可以使用一些预定义的逻辑。有关吊舱的信息与租户信息一起存储。
  • 从描述看来,当前您仅将文件信息存储在一张表中。这只会给一个表/存储帐户带来很大压力,这不是可扩展的设计恕我直言。而是在创建租户时,将一个Pod分配给该租户,然后为每个租户创建一个表,该表将文件信息存储在该表中。这将带来以下好处:1)您已经很好地隔离了每个租户数据,2)现在,读取请求已实现负载平衡,从而使您可以保持在可伸缩性目标之内; 3)由于每个租户数据位于单独的表中,因此您可以PartitionKey自由使用并且您可以根据需要分配其他值。

现在开始存储文件:

  • 同样,您可以采用以下Pod概念:每个租户的文件都驻留在该租户的pod存储帐户中。
  • 如果您发现此方法存在问题,则可以随机选择pod存储帐户并将文件放在此处,然后将Blob URL存储在Files表中。
  • 您可以只使用一个Blob容器(例如tenant-files),也可以为每个租户使用单独的Blob容器。
  • 对于所有租户而言,只有一个Blob容器,管理开销就较小,因为在pod调试新容器时只需创建此容器但是不利的是,您不能按租户逻辑上分开文件,因此,如果要提供对文件的直接访问(使用共享访问签名),这将是有问题的。
  • 每个租户都有单独的Blob容器,管理开销会更多,但是您会得到很好的逻辑隔离。在租户加入后,您必须在每个Pod存储帐户中为该租户创建容器。同样,在调试新的Pod时,必须确保为系统中的每个租户创建了一个Blob容器。

希望这会使您对如何设计解决方案有所了解。我们在解决方案中使用了其中一些概念(显式使用Azure存储作为数据存储)。看看您想出什么体系结构真的很有趣。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数据存储到 Firebase 中的多个引用的最有效方法是什么?

来自分类Dev

在MySQL中存储列表的最有效方法

来自分类Dev

在SQL表中存储课程的最有效方法

来自分类Dev

在Matlab中存储字典的最有效方法

来自分类Dev

存储数据的最有效方法

来自分类Dev

在多个存储库之间共享github工作流的最有效方法是什么?

来自分类Dev

存储画布部分的最有效方法?

来自分类Dev

用Java存储图像的最有效方法

来自分类Dev

从Python中的类方法返回多个值的最有效方法是什么?

来自分类Dev

从Python中的类方法返回多个值的最有效方法是什么?

来自分类Dev

SQL分开存储文档中每个单词的最有效方法

来自分类Dev

在大量阅读的Riak中存储时间序列的最有效方法是什么

来自分类Dev

在数据库中存储照片参考的最有效方法

来自分类Dev

在C#中存储/检索字典的最有效方法?

来自分类Dev

在NLP应用程序中存储语言模型的最有效方法是什么?

来自分类Dev

如何将分离的数据存储到数据库中的最有效方法

来自分类Dev

在Django中存储5点刻度的最有效方法

来自分类Dev

将法线存储在gltf文件中的最有效方法?

来自分类Dev

在Django中存储5点刻度的最有效方法

来自分类Dev

在JS中,最有效的方法是快速存储XY坐标整数

来自分类Dev

在文件中存储大量由定界符分隔的整数键值对的最有效方法

来自分类Dev

将VARCHAR存储在150B行表中的最有效方法

来自分类Dev

在Bash中搜索文本文件中多个术语的最有效方法

来自分类Dev

检查多个项目是否存在的最有效方法

来自分类Dev

使用和与多个线程通信的最有效方法

来自分类Dev

为多个ssh隧道设置最有效的方法?

来自分类Dev

处理多个文件的最有效方法

来自分类Dev

python中检查同一个存储桶中是否存在多个s3键的最有效方法是什么?

来自分类Dev

在JavaScript中合并多个排序对象数组的最有效方法是什么?

Related 相关文章

  1. 1

    将数据存储到 Firebase 中的多个引用的最有效方法是什么?

  2. 2

    在MySQL中存储列表的最有效方法

  3. 3

    在SQL表中存储课程的最有效方法

  4. 4

    在Matlab中存储字典的最有效方法

  5. 5

    存储数据的最有效方法

  6. 6

    在多个存储库之间共享github工作流的最有效方法是什么?

  7. 7

    存储画布部分的最有效方法?

  8. 8

    用Java存储图像的最有效方法

  9. 9

    从Python中的类方法返回多个值的最有效方法是什么?

  10. 10

    从Python中的类方法返回多个值的最有效方法是什么?

  11. 11

    SQL分开存储文档中每个单词的最有效方法

  12. 12

    在大量阅读的Riak中存储时间序列的最有效方法是什么

  13. 13

    在数据库中存储照片参考的最有效方法

  14. 14

    在C#中存储/检索字典的最有效方法?

  15. 15

    在NLP应用程序中存储语言模型的最有效方法是什么?

  16. 16

    如何将分离的数据存储到数据库中的最有效方法

  17. 17

    在Django中存储5点刻度的最有效方法

  18. 18

    将法线存储在gltf文件中的最有效方法?

  19. 19

    在Django中存储5点刻度的最有效方法

  20. 20

    在JS中,最有效的方法是快速存储XY坐标整数

  21. 21

    在文件中存储大量由定界符分隔的整数键值对的最有效方法

  22. 22

    将VARCHAR存储在150B行表中的最有效方法

  23. 23

    在Bash中搜索文本文件中多个术语的最有效方法

  24. 24

    检查多个项目是否存在的最有效方法

  25. 25

    使用和与多个线程通信的最有效方法

  26. 26

    为多个ssh隧道设置最有效的方法?

  27. 27

    处理多个文件的最有效方法

  28. 28

    python中检查同一个存储桶中是否存在多个s3键的最有效方法是什么?

  29. 29

    在JavaScript中合并多个排序对象数组的最有效方法是什么?

热门标签

归档