我有一个非常简单的 Cosmos DB 查询,是从 asp.net core 3 Razor Pages 应用程序进行的。我在 Azure 的数据资源管理器中进行的相同查询将在 0.02 毫秒内返回结果。当我通过应用程序运行它时,设置秒表来查看调用的持续时间,它可以是 400 毫秒到 2000 毫秒之间的任何时间。
QueryDefinition queryDefinition = new QueryDefinition("SELECT * FROM Cache where Cache.JoinCode = @jc").WithParameter("@jc", JoinCode);
var query = _container.GetItemQueryIterator<HostCache>(queryDefinition);
List<HostCache> results = new List<HostCache>();
while (query.HasMoreResults)
{
var response = await query.ReadNextAsync();
results.AddRange(response.ToList());
}
return results.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
长时间运行的请求是await query.ReadNextAsync();. 我能做些什么来加快速度吗?也许我做错了?
我正在研究 CosmosDB 的 Python 示例(请参阅CosmosDB for Python),我看到一个容器定义如下:
partition_key = PartitionKey(path='/id', kind='Hash')
db.create_container(id=id, partition_key=partition_key)
Run Code Online (Sandbox Code Playgroud)
读取项目的代码:
response = container.read_item(item=doc_id, partition_key=doc_id)
Run Code Online (Sandbox Code Playgroud)
现在我的困惑是为什么选择与唯一文档 ID 相同的分区键。那么,这里分区有什么用呢?
在我看来,分区适用于共享某些公共组的键,例如食物组的分区。
作为我们为应用程序实施的运行状况检查的一部分,我们尝试将虚拟文档写入数据库。对于此文档,我们使用 10 秒的 TTL(生存时间),以便 Cosmos DB 自动清理文档。
我的问题是:将 TTL 一直设置为 1 秒是否有缺点(性能、RU 成本等)?一旦文档写入成功,健康检查就快乐了,我们就不再关心文档了。
我在 Azure Cosmos DB 中有以下数据。我想根据between data.date和过滤数据contains employee.full_name。以下查询给出了不需要的结果。我真的需要帮助来解决这个问题。此链接如何使用 Cosmos DB 查询嵌套数组似乎不符合我的预期结果。
Cosmos DB 数据
{
"id": "ED-BSC1",
"data": [
{
"date": "2023-05-09",
"employees": [
{
"employee_id": "E3948",
"full_name": "Donni",
"loc": "Building F",
"floor": 5
},
{
"employee_id": "E9372",
"full_name": "Viona",
"loc": "Building F",
"floor": 5
},
{
"employee_id": "E4551",
"full_name": "Abby",
"loc": "Building A",
"floor": 6
}
]
},
{
"date": "2023-05-10",
"employees": [
{
"employee_id": "E9032",
"full_name": "Brian",
"loc": "Building A",
"floor": 12
}, …Run Code Online (Sandbox Code Playgroud) 我已经阅读了一些谷歌上可用的文档来将我的一段 java 代码与 azure cosmos db 连接起来,但它太复杂了。
有没有更简单的方法来实现这一目标?
任何帮助将不胜感激。
提前致谢
我正在使用带有UWP的xamarin,我想将图像插入azure cosmos DB(Document DB).
那我该怎么做呢?