我必须在Cosmos DB中为不同用户保存许多项目-这样一个用户可以拥有多个项目。稍后,我将为所选用户显示这些项目,或者为所有用户显示所有项目。我应该为每个用户创建一个集合,还是为所有带有单个用户标签的项目创建一个集合?
答案 0 :(得分:1)
如果您为所有用户创建一个集合,则可以将用户ID选择为分区键,并且在单个或几个选定分区中运行的查询都可以很好地运行。对于要向所有用户报告的查询,“扇出”查询对于RU(资源单元)而言会很昂贵。在这里,您有两个选择。
一个-如果您的风扇很少运行-扩大您的Cosmosdb帐户,运行查询,然后缩小查询范围。
另一种首选解决方案是使用change feed,在其中您为“所有用户”信息维护一个单独的集合,从而节省了您的RU。
另一方面,如果您创建多个集合(每个集合用于单独的用户),您仍将需要具有这些集合的分区键,并且从总RU角度来看,这可能会更加昂贵,因为RU最少。
简而言之,最好使用单个集合,按用户ID进行分区,使用更改供稿。而且,如果您还有其他收藏集,则可以在同一database
中共享它们之间的RU希望这会有所帮助。