首页 文章

跨帐户分区DocumentDB的最佳做法是什么?

提问于
浏览
0

我正在开发一个使用DocumentDB存储客户数据的应用程序 . 其中一个要求是我们按地理区域划分客户数据,以便美国客户的数据存储在美国,欧洲客户的数据存储在欧洲 .

我计划实现这一目标的方式是拥有两个DocumentDB帐户,因为帐户与数据中心/区域相关联 . 然后,每个帐户都有一个数据库,以及该数据库中的一个集合 .

我已经查看了有关客户端和服务器端分区的DocumentDB文档(例如12),但在我看来,内置分区支持将无法处理多个区域 . 即使 IPartitionResolver 的实现可以想象地返回任意集合自链接,分区映射也与 DocumentClient 相关联,因此绑定到特定帐户 .

因此,我似乎需要创建自己的分区逻辑并维护两个单独的 DocumentClient 实例 - 一个用于美国帐户,一个用于欧洲帐户 . 有没有其他方法可以达到这个要求?

1 回答

  • 1

    Azure的best practices on data partitioning说:

    所有数据库都是在DocumentDB帐户的上下文中创建的 . 单个DocumentDB帐户可以包含多个数据库,它指定在哪个区域创建数据库 . 每个DocumentDB帐户还强制执行自己的访问控制 . 您可以使用DocumentDB帐户对需要访问它们的用户附近的分片(数据库中的集合)进行地理定位,并强制执行限制,以便只有这些用户可以连接到它们 .

    因此,如果您的目的是将数据保持在用户附近(而不仅仅是将它们分开存储),那么您唯一的选择就是创建不同的帐户 . 幸运的是,结算不是基于每个帐户而是基于每个集合 .

    DocumentDB的resource model给人的印象是你不能(至少开箱即用)混合DocumentDB帐户 . 看起来分区键看起来没什么用,因为分区也只能在同一个帐户中发生 .

    可能是sample会帮助你或提供一些提示 .

相关问题