Database 为基于日期的worldwide DocumentDB应用程序选择正确的分区键

Database 为基于日期的worldwide DocumentDB应用程序选择正确的分区键,database,azure,geospatial,azure-cosmosdb,nosql,Database,Azure,Geospatial,Azure Cosmosdb,Nosql,我正在开发一个全球应用程序,其中大多数搜索都基于地理空间数据(给定坐标的最近记录)和日期范围 因此,基本上可能是主要的搜索应用程序,如AirBnb、Booking等 考虑到这些上下文,我应该在DocumentDB分区集合中选择哪个分区键 谢谢大家! 更新:就像我告诉马蒂亚斯(见答案)的那样,我和我的朋友,我们正在考虑类似这个国家的事情。 这个应用程序是关于搜索的。另一件重要的事情是我们有约会。大量的枣。 由于我们是DDB新手,我们的问题是:“如果我们选择国家作为分区键,并且我们的查询必须在不同的

我正在开发一个全球应用程序,其中大多数搜索都基于地理空间数据(给定坐标的最近记录)和日期范围

因此,基本上可能是主要的搜索应用程序,如AirBnb、Booking等

考虑到这些上下文,我应该在DocumentDB分区集合中选择哪个分区键

谢谢大家!

更新:就像我告诉马蒂亚斯(见答案)的那样,我和我的朋友,我们正在考虑类似这个国家的事情。 这个应用程序是关于搜索的。另一件重要的事情是我们有约会。大量的枣。
由于我们是DDB新手,我们的问题是:“如果我们选择国家作为分区键,并且我们的查询必须在不同的国家搜索,会发生什么情况?”。i、 e.在国家边界附近进行乔治亚迪乌斯搜索。

不知道更多信息很难说,但我会从这些官方分区指南开始:,特别是关于

要点应该是吞吐量分布(您不需要“热点”)和事务原子性。请记住,当您发出查询时,它可以跨越多个分区,DDB将平均分配吞吐量(您可以将此功能与选项一起使用)

因此,真正决定哪一个分区键是最好的分区键实际上取决于数据的分布方式和查询的构建方式

由于应用程序是全球范围的,也许最好的分区方法是按国家/大陆/地区(其中之一)进行划分,但这实际上取决于数据量,它应该均匀分布,以避免出现真正的热分区/区域


最后,您还可以检查和以改进性能。

不知道更多信息很难说,但我将从以下官方分区指南开始:,特别是关于

要点应该是吞吐量分布(您不需要“热点”)和事务原子性。请记住,当您发出查询时,它可以跨越多个分区,DDB将平均分配吞吐量(您可以将此功能与选项一起使用)

因此,真正决定哪一个分区键是最好的分区键实际上取决于数据的分布方式和查询的构建方式

由于应用程序是全球范围的,也许最好的分区方法是按国家/大陆/地区(其中之一)进行划分,但这实际上取决于数据量,它应该均匀分布,以避免出现真正的热分区/区域


最后,您还可以检查和以改进性能。

如前所述,更多信息将帮助我们提供更好的建议。我在下面添加了一些分区键选择的想法/选项:

  • 使用通用分区键,如用户ID或产品ID。在此模型中,地理空间查询将跨分区执行,但由于DocumentDB在分区内本地构建空间索引,这可能满足您的性能需求
  • 根据位置的大小使用分区方案。这将确保相似位置的数据点将被放置在相同的分区上。这将需要在应用程序中添加一些额外的工作来添加“GeoHash>abcdef和GeoHash
  • 如果您的大多数查询都在一个国家/地区内,则基于属性(如国家/地区)进行分区。需要跨越国家/地区的罕见查询也会表现良好(尽管延迟不如针对单个分区/国家/地区的查询低),因为它们可以在每个分区内使用本地索引。您可能需要单独处理特殊情况。例如,如果美国拥有超过30-40%的数据,您可能希望选择一种混合方法,其中美国数据使用状态作为分区键,数据较少的国家使用国家作为分区键。根据数据分布情况,国家/地区+日/月/年组合键也可能有效
  • 如果您的查询在时间范围内均匀分布,则可以考虑使用日期作为分区键。但对于大多数应用程序,由于最近的数据访问更频繁,因此这不是一个好的选择
如前所述,更多信息将帮助我们提供更好的建议。我在下面添加了一些分区键选择的想法/选项:

  • 使用通用分区键,如用户ID或产品ID。在此模型中,地理空间查询将跨分区执行,但由于DocumentDB在分区内本地构建空间索引,这可能满足您的性能需求
  • 根据位置的大小使用分区方案。这将确保相似位置的数据点将被放置在相同的分区上。这将需要在应用程序中添加一些额外的工作来添加“GeoHash>abcdef和GeoHash
  • 如果您的大多数查询都在一个国家/地区内,则基于属性(如国家/地区)进行分区。需要跨越国家/地区的罕见查询也会表现良好(尽管延迟不如针对单个分区/国家/地区的查询低),因为它们可以在每个分区内使用本地索引。您可能需要单独处理特殊情况。例如,如果美国拥有超过30-40%的数据,您可能希望选择一种混合方法,其中美国数据使用状态作为分区键,数据较少的国家使用国家作为分区键。根据数据分布情况,国家/地区+日/月/年组合键也可能有效
  • 如果您的查询在时间范围内均匀分布,则可以考虑使用日期作为分区键。但对于大多数应用程序,由于最近的数据访问更频繁,因此这不是一个好的选择
如果您使用的是partitio