documentdb 在集合的所有分区中执行存储过程?

Che*_*uru 4 azure azure-cosmosdb

是否可以对所有分区集合执行存储过程。如果不是,我怎样才能在不往返的情况下存档?

提前致谢。

Lar*_*one 5

不,存储过程在单个分区中执行,并且执行存储过程时没有自动扇出。调用它们时需要指定分区键。

假设您的意思是“实现”而不是“存档”,我的第一个建议是设计您的应用程序并选择您的 pk,以便您每次调用时都可用。如果失败,您唯一的其他选择是手动进行扇出。您可以并行执行此操作,因此延迟仅比命中单个分区稍长一些,但它会消耗 n 倍的 RU,因此总体 RU 吞吐量限制可能会限制您。

自己进行扇出的困难在于您无法控制分区集合中分区的数量和范围。因此,您需要在进行扇出之前检索它们。我不知道其他的SDK,但我还没有看到它在node.js SDK中直接支持。但是,REST API 实现了一个端点来执行此操作,https://{your endpoint domain}.documents.azure.com/dbs/{your collection's uri fragment}/pkranges因此您可能必须根据您的 SDK 直接调用该端点。这将告诉您集合中每个分区的当前 pks 范围。min 是包含在内的,因此您可以使用它来进行存储过程调用。