Azure Cosmos Db 作为键值存储索引模式

Azure Cosmos Db as key value store indexing mode

将 cosmos db 用作简单的 key/value 存储时,我应该使用什么索引模式/策略?

来自 https://docs.microsoft.com/en-us/azure/cosmos-db/index-policy :

None: Indexing is disabled on the container. This is commonly used when a container is used as a pure key-value store without the need for secondary indexes.

这是因为即使将indexMode设置为“none”,用作分区键的属性也被索引了吗?我希望需要打开索引,但仅将分区键的路径指定为唯一包含的路径。

如果重要的话,我打算使用 SQL API。

编辑:

这是我为理解这一点而缺少的信息:

  1. 该项目必须有一个 id 属性,否则 cosmos db 将分配一个。 https://docs.microsoft.com/en-us/azure/cosmos-db/account-databases-containers-items#properties-of-an-item
  2. 由于我使用 Azure 数据工厂加载项目,我可以告诉 ADF 将具有我想用作我的 ID 的值的列复制到名为 id 的新列中:https://docs.microsoft.com/en-us/azure/data-factory/copy-activity-overview#add-additional-columns-during-copy
  3. 我需要使用 ReadItemAsync,或者更好的是 ReadItemStreamAsync,因为它不会反序列化响应,以便在不使用查询的情况下获取项目。 https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.cosmos.container.readitemasync?view=azure-dotnet https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.cosmos.container.readitemstreamasync?view=azure-dotnet

当您将 indexingMode 设置为 "none" 时,有效检索文档的唯一方法是 id(例如 ReadDocumentAsync()read_item())。这类似于 key/value 商店,因为您不会对其他属性执行查询;您将专门通过某个已知 ID 查找文档,然后返回整个文档。在成本方面,对于 1K 的文档,这将是 ~1RU,就像使用索引集合的点读一样。

您仍然可以 运行 查询,但如果没有索引,您将看到异常高的 RU 成本。

您仍会像往常一样使用点读指定分区键的值。