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。
编辑:
这是我为理解这一点而缺少的信息:
- 该项目必须有一个
id
属性,否则 cosmos db 将分配一个。 https://docs.microsoft.com/en-us/azure/cosmos-db/account-databases-containers-items#properties-of-an-item
- 由于我使用 Azure 数据工厂加载项目,我可以告诉 ADF 将具有我想用作我的 ID 的值的列复制到名为
id
的新列中:https://docs.microsoft.com/en-us/azure/data-factory/copy-activity-overview#add-additional-columns-during-copy
- 我需要使用
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 成本。
您仍会像往常一样使用点读指定分区键的值。
将 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。
编辑:
这是我为理解这一点而缺少的信息:
- 该项目必须有一个
id
属性,否则 cosmos db 将分配一个。 https://docs.microsoft.com/en-us/azure/cosmos-db/account-databases-containers-items#properties-of-an-item - 由于我使用 Azure 数据工厂加载项目,我可以告诉 ADF 将具有我想用作我的 ID 的值的列复制到名为
id
的新列中:https://docs.microsoft.com/en-us/azure/data-factory/copy-activity-overview#add-additional-columns-during-copy - 我需要使用
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 成本。
您仍会像往常一样使用点读指定分区键的值。