首页 > 解决方案 > Azure Cosmos Db 作为键值存储索引模式

问题描述

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

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

无:在容器上禁用索引。这通常在容器用作纯键值存储而不需要二级索引时使用。

这是因为即使 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 的值的列复制到一个名为idhttps ://docs.microsoft.com/en- 的新列中我们/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

标签: azureazure-cosmosdbazure-cosmosdb-sqlapi

解决方案


当您设置indexingMode"none"时,有效检索文档的唯一方法是通过id(例如ReadDocumentAsync()read_item())。这类似于键/值存储,因为您不会对其他属性执行查询;您将专门通过某个已知 id 查找文档,并返回整个文档。成本方面,对于 1K 文档,这将是大约 1RU,就像带有索引集合的点读一样。

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

您仍然可以像往常一样在点读取中指定分区键的值。


推荐阅读