子分区或复合分区文档数据库
sub partitioning or composite partitioning document db
在msdn的一篇文章中,
https://azure.microsoft.com/en-in/documentation/articles/documentdb-partition-data/,
有一行指定 "sub-partitioning" 或 "complex partitioning" 可以完成。这是否意味着:
- 集合中可以有子分区吗?
- 在一个DocumentDb中,可以有多个分区逻辑?例如,我将在一个 Document Db 中有四个集合。其中两个可以基于散列而另外两个基于范围吗?
如果这些答案中的任何一个是肯定的,那么有人可以为我提供一个 link 可能引导我找到相同示例的答案吗?
答案:
没有明确的方法可以在集合中对数据进行子分区。通常使用字段来表示文档类型或在每个文档上使用 isTypeA: true
键值对,但这是您的应用程序采用的约定。但是,您可以为每个帐户创建多个数据库(默认限制为 5 个,但可以根据要求扩展),每个数据库都可以有自己的一组集合。我在 (temporalize-api) 中使用该两级层次结构。 TenantID 使用查找 table 加上默认值确定我的顶级分区(数据库)。这使我能够将关键或高价值租户拉入负载较少的数据库,而让其他所有人保持默认状态。我在 EntityID 上使用一致的哈希进行二级分区(集合)。
当然,没有什么可以阻止您这样做。请特别注意您链接到的 Aravind 文章中最后一节(开发分区应用程序)中的精彩讨论。它包括您需要决定和实施的事项清单。为 .NET SDK 提供的分区解析器不会为您解决这些问题。
我还没有看到我认为是一个完整系统的开源示例,包括添加容量时的平衡、存储分区 maps/meta-data 的位置以及查询 fan-out/aggregate 优化。我有一个 node.js 正在进行中 (temporalize-api) 并且实际上正在生产中。我已经决定如何进行平衡和查询扇出,这些都记录在该链接文件的注释中,但我没有实施所有这些。我将分区元数据存储在 "first" 数据库的 "first" 集合中。
在msdn的一篇文章中, https://azure.microsoft.com/en-in/documentation/articles/documentdb-partition-data/, 有一行指定 "sub-partitioning" 或 "complex partitioning" 可以完成。这是否意味着:
- 集合中可以有子分区吗?
- 在一个DocumentDb中,可以有多个分区逻辑?例如,我将在一个 Document Db 中有四个集合。其中两个可以基于散列而另外两个基于范围吗?
如果这些答案中的任何一个是肯定的,那么有人可以为我提供一个 link 可能引导我找到相同示例的答案吗?
答案:
没有明确的方法可以在集合中对数据进行子分区。通常使用字段来表示文档类型或在每个文档上使用
isTypeA: true
键值对,但这是您的应用程序采用的约定。但是,您可以为每个帐户创建多个数据库(默认限制为 5 个,但可以根据要求扩展),每个数据库都可以有自己的一组集合。我在 (temporalize-api) 中使用该两级层次结构。 TenantID 使用查找 table 加上默认值确定我的顶级分区(数据库)。这使我能够将关键或高价值租户拉入负载较少的数据库,而让其他所有人保持默认状态。我在 EntityID 上使用一致的哈希进行二级分区(集合)。当然,没有什么可以阻止您这样做。请特别注意您链接到的 Aravind 文章中最后一节(开发分区应用程序)中的精彩讨论。它包括您需要决定和实施的事项清单。为 .NET SDK 提供的分区解析器不会为您解决这些问题。
我还没有看到我认为是一个完整系统的开源示例,包括添加容量时的平衡、存储分区 maps/meta-data 的位置以及查询 fan-out/aggregate 优化。我有一个 node.js 正在进行中 (temporalize-api) 并且实际上正在生产中。我已经决定如何进行平衡和查询扇出,这些都记录在该链接文件的注释中,但我没有实施所有这些。我将分区元数据存储在 "first" 数据库的 "first" 集合中。