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

时间:2016-04-19 03:18:48

标签: partitioning sharding azure-cosmosdb

我正在开发一个使用DocumentDB存储客户数据的应用程序。其中一个要求是我们按地理区域隔离客户数据,以便美国客户'数据存储在美国和欧洲客户之间。数据存在于欧洲。

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

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

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

1 个答案:

答案 0 :(得分:1)

Azure的best practices on data partitioning说:

  

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

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

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

可能是sample可以帮助您或提供一些提示。