2016-08-11 51 views
0

假设我正在美国和加拿大建立一个房地产物业的documentdb集合(最终,我可能还需要添加其他国家),我希望在我的集合中有数百万个文档。另外,我们假设最流行的查询将是从给定位置检索特定半径内的顶部X属性。DocumentDb房地产数据的分区策略

鉴于这些要求,什么是一个好的分区策略?将使用邮政编码/邮政编码是一个很好的分区密钥?涉及地理位置的策略会更好吗?任何其他建议?

回答

1

实际上,我建议你使用分区集合并使用id作为分区键,然后使用地理查询。它非常简单,并且可以最大限度地提高查询的效率,从而为您提供最佳吞吐量。后来,如果这样做不起作用,您可以考虑更高性能的分区策略。

+0

我的印象是,为了帮助Azure找到数据所在的分区,分区策略必须是“逻辑的”或“可预测的”。我一直看到的一个例子是使用某个属性的第一个字母来确定分区。我错了吗? – desautelsj

+0

不,你是对的。当你有这样的领域,然后使用它。当我拥有该分区密钥时,我使用TenantID作为分区密钥。如果你有这样的领域,那将会更有效率。但是,就你而言,用户将指定一个地址或一个邮政编码。如果目标属性在相同的邮政编码中,那么使用邮政编码作为分区关键字是最好的。但是,如果要捕获相邻的邮政编码,则需要搜索所有分区,因为您无法控制数据放入哪个分区。在这种情况下,随机(我的“使用ID”建议)是一样好。 –

+0

在这条路上,如果这不适合你,那么也许使用邮政编码的前两位或三位数字会更有效率。我担心的是,当你接近边界时,你仍然需要搜索那些。一个更复杂的方案,你保留两个邮政编码之间的双向最小距离查找表会更好,但更复杂。您必须首先查询该表以找到指定距离内的邮政编码列表,然后使用该列表查找您的查询。 –