cosmos DB(或其他文档数据库)中的最佳数据组织

时间:2019-09-25 21:20:32

标签: azure-cosmosdb

我必须在Cosmos DB中为不同用户保存许多项目-这样一个用户可以拥有多个项目。稍后,我将为所选用户显示这些项目,或者为所有用户显示所有项目。我应该为每个用户创建一个集合,还是为所有带有单个用户标签的项目创建一个集合?

1 个答案:

答案 0 :(得分:1)

如果您为所有用户创建一个集合,则可以将用户ID选择为分区键,并且在单个或几个选定分区中运行的查询都可以很好地运行。对于要向所有用户报告的查询,“扇出”查询对于RU(资源单元)而言会很昂贵。在这里,您有两个选择。

一个-如果您的风扇很少运行-扩大您的Cosmosdb帐户,运行查询,然后缩小查询范围。

另一种首选解决方案是使用change feed,在其中您为“所有用户”信息维护一个单独的集合,从而节省了您的RU。

另一方面,如果您创建多个集合(每个集合用于单独的用户),您仍将需要具有这些集合的分区键,并且从总RU角度来看,这可能会更加昂贵,因为RU最少。

简而言之,最好使用单个集合,按用户ID进行分区,使用更改供稿。而且,如果您还有其他收藏集,则可以在同一database

中共享它们之间的RU

希望这会有所帮助。