azure - Azure Cosmos Db 作为键值存储索引模式
问题描述
将 cosmos db 用作简单的键/值存储时,我应该使用什么索引模式/策略?
来自https://docs.microsoft.com/en-us/azure/cosmos-db/index-policy:
无:在容器上禁用索引。这通常在容器用作纯键值存储而不需要二级索引时使用。
这是因为即使 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- 的新列中我们/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()
)。这类似于键/值存储,因为您不会对其他属性执行查询;您将专门通过某个已知 id 查找文档,并返回整个文档。成本方面,对于 1K 文档,这将是大约 1RU,就像带有索引集合的点读一样。
您仍然可以运行查询,但如果没有索引,您会看到异常高的 RU 成本。
您仍然可以像往常一样在点读取中指定分区键的值。
推荐阅读
- html - div元素中的表格未在一行中对齐
- resource-scheduling - 跨多个唯一代理的有序任务的离线调度
- python - ValueError:未知层:自定义>CTCLayer。请确保将此对象传递给“custom_objects”参数
- html - 如何在没有一个或另一个的情况下在同一行中显示两个 JSX 元素?
- vulkan - 具有不同格式顶点的顶点缓冲区
- bootstrap-4 - 使容器更大,但不流畅
- flutter - 'List 类型的值
- git - Visual Studio Code 远程:用户名或密码无效致命:身份验证失败
- zend-framework3 - Laminas / Zf3 - 从 Fieldset 获取参数,但它返回空值
- reactjs - 如何在反应应用程序中压缩构建文件?