我正在开发一个使用DocumentDB存储客户数据的应用程序。其中一个要求是我们按地理区域隔离客户数据,以便美国客户'数据存储在美国和欧洲客户之间。数据存在于欧洲。
我计划实现此目的的方式是拥有两个DocumentDB帐户,因为帐户与数据中心/区域相关联。然后,每个帐户都有一个数据库,以及该数据库中的一个集合。
我已经查看了有关客户端和服务器端分区的DocumentDB文档(例如1,2),但在我看来,内置分区支持不会是能够处理多个地区。即使IPartitionResolver
的实现可以想象地返回任意集合自链接,分区映射也与DocumentClient
相关联,因此与特定帐户绑定。
因此,我似乎需要创建自己的分区逻辑并维护两个单独的DocumentClient
个实例 - 一个用于美国帐户,另一个用于欧洲帐户。有没有其他方法可以达到这个要求?
答案 0 :(得分:1)
Azure的best practices on data partitioning说:
所有数据库都是在DocumentDB帐户的上下文中创建的。一个 单个DocumentDB帐户可以包含多个数据库 指定数据库在哪个区域中创建。每个DocumentDB 帐户还强制执行自己的访问控制。您可以使用DocumentDB 帐户到地理位置靠近的分片(数据库中的集合) 需要访问它们的用户,并执行限制 只有那些用户可以连接到它们。
因此,如果您的目的是将数据保持在用户附近(而不仅仅是将它们分开存储),那么您唯一的选择就是创建不同的帐户。幸运的是,结算不是基于每个帐户而是基于每个集合。
DocumentDB的resource model给人的印象是你不能(至少开箱即用)混合DocumentDB帐户。它看起来不像分区键,因为分区也只能在同一个帐户中发生。
可能是sample可以帮助您或提供一些提示。