我们可以像Skip和Top那样进行分页
从联系人中选择10个PostId
在DocumentDB?
我在弹性搜索中有一个集合,我们在其中存储事件,并在以下报告中汇总这些事件:
我们想转移到DocumentDB,但不支持GROUPING,我不知道如何在不进行7 + 24查询的情况下实现这一点.有任何想法吗?
谢谢
使用.NET库,如何确定查询的RU费用.它返回IQueryable,我不知道如何记录它.如何记录所有请求的RU的奖励点.
简单的代码,但不返回RU:
var docs = DocumentDBRepository<CampaignMessage>.client.
CreateDocumentQuery<CampaignMessage>(UriFactoryExtensions.CreateCollectionUri(), new FeedOptions() { MaxItemCount = -1, MaxDegreeOfParallelism = 5 }).Where(x => x.BlastKey == "abc-796").
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Cosmos DB输入绑定运行http触发器Azure功能.我希望http触发器的url在查询字符串上包含几个参数,这些参数绑定到输入Cosmos DB绑定的SQL查询.我正在尝试以下绑定function.json,但它不起作用(该功能甚至没有被触发):
{
"direction": "in",
"type": "httpTrigger",
"authLevel": "anonymous",
"name": "req",
"methods": [ "get" ],
"route": "users/{age=age?}/{gender=gender?}"
},
{
"direction": "in",
"type": "documentDB",
"name": "users",
"databaseName": "Database",
"collectionName": "Users",
"sqlQuery": "SELECT * FROM x where x.age = {age} and x.gender = {gender}",
"connection": "COSMOSDB_CONNECTION_STRING"
},
Run Code Online (Sandbox Code Playgroud)
根据此答案,路由约束users/{age=age?}/{gender=gender?}对Web API有效,根据文档, 您可以将任何Web API路径约束与您的参数一起使用.最后,我想向Azure函数发出一个GET请求api/users?age=30&gender=male.那怎么办呢?
azure azure-functions azure-cosmosdb azure-functions-runtime
我有一个Cosmos DB集合,其中包含基于设备ID的多个分区.我经常遇到需要通过特定设备ID检索最新文档的用例.我目前正在使用SELECT TOP 1DocumentDB API中提供的功能,如下所示:
SELECT TOP 1 *
FROM c
WHERE c.deviceId = 5
ORDER BY c.timeStamp DESC
Run Code Online (Sandbox Code Playgroud)
正如人们所预料的那样,随着集合和单个分区的大小增加,这种方法导致RU/s消耗增加并且性能降低.作为此问题的临时补救措施,我添加了额外的where子句以按时间戳限制查询范围:
SELECT TOP 1 *
FROM c
WHERE c.deviceId = 5
AND c.timeStamp >= 1506608558 --timestamps are unix/epoch based to optimize indexing
AND c.timeStamp <= 1506694958
ORDER BY c.timeStamp DESC
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的方法来按分区ID选择最新文档,因为添加此where子句可能会导致意外或缺少结果.
在我学习如何使用Cosmos DB的图形时,我发现了两个Microsoft教程:
虽然我使用相同的查询,但它的执行不同.
使用Gremlin.Net,它立即执行.我经常(我会说70%的时间)得到一个RequestRateTooLargeException.如果我理解正确,这意味着我一直达到我选择的400RU/s限制.但是,当查询进入低谷时,它的速度是Microsoft.Azure.Graph解决方案的两倍.
实际上,使用Micorosft.Azure.Graph,我必须调用ExecuteNextAsync一个循环,一次返回一个结果.
所以问题是:
1°)我应该使用哪种方法来获得更好的性能?
2°)我怎么知道我的查询的RU所以我可以微调它?
3°)是否可以提高现有集合的吞吐量?
更新
问题3,我发现在我的数据库的"数据资源管理器"刀片中,我的图表有一个"Scale&Settings",我可以更新吞吐量.
Update2
问题2,我们无法在使用第一种方法(Gremlin.Net)时收取RU,但Microsoft.Graph方法ExecuteNextAsync返回FeedResponse带有字段的a RequestCharge.
我是“ NoSQL”领域的新手,最近我开始将Cosmos DB用于JSON文档,并且能够使用CosmosDB“ SQL”和“ Mongo” API来存储和获取数据。
哪种API最适合我?(要求:性能,低延迟,大量收集,低成本)
我想在Azure CosmosDB上存储不同结构的数据。我知道容器可以存储不同类型的数据。在生产中,通过为它们分配不同的“类型”属性来区分它们。
当我观看最佳实践视频时:我注意到有两个容器(时间戳:17:47):
第一个,users,只有一种数据类型,而第二个,posts,包含两种类型的内容:帖子和评论。
我对 cosmos DB 相当陌生,并试图了解azure cosmos DB SDK 为 Java 提供的用于修补文档的增量操作。我需要在容器中的文档之一中维护增量计数器。该文件看起来像这样——
{"counter": 1}
Run Code Online (Sandbox Code Playgroud)
现在,在我的应用程序中,每次发生操作时,我希望将此计数器的值增加 1。为此,我使用CosmosPatchOperations。我在这里添加一个增量,这样cosmosPatch.increment("/counter", 1)效果很好。
现在,该应用程序可以运行多个实例,所有实例都与 Cosmos 容器中的同一文档进行通信。所以App1和App2都可以同时触发增量。SDK 方法返回更新后的文档,我需要使用该更新后的值。
我的问题是,这里的 cosmos DB 是否采用某种锁定机制来确保两个补丁相继发生,并且在这种情况下,我在 App1 和 App2 中获得的更新值是什么(SDK 方法返回更新后的值)文档)。其中一个是 2 个,另一个是 3 个吗?
Couchbase 在集群级别支持这样的计数器,如此处所述,它对我来说工作得很好,没有任何并发问题。我现在正在迁移到 cosmos Db,并一直在努力寻找如何实现这一目标。
更新1:
我决定测试一下。我在本地 Mac 中设置了 Cosmos 模拟器,并创建了一个 DB 和容器,并且 RU 会自动从 1 增加到 10K。然后在这个容器中我添加了一个像这样的文档 -
{
"id": "randomId",
"counter": 0
}
Run Code Online (Sandbox Code Playgroud)
在此之后,我创建了一个简单的 API,其职责只是在每次调用时将计数器加 1。然后我使用Locust多次调用这个 API 来模拟一个小型的类似负载的场景。最初,测试运行良好,每次调用都像预期的那样接收计数器(以增量方式)。在增加负载时,我看到一些错误,即RequestTimeOutException,状态代码为 408。其他请求仍然可以正常工作,并获得正确的计数器值。我不明白是什么导致了这里的 RequestTimeOut 异常。堆栈跟踪暗示与并发有关,但我无法理解它。这是堆栈跟踪 -
更新 2: 更新 …
我正在尝试使用部分文档更新(补丁 API)来更新文档中的子对象,但遇到了麻烦。我发现这个堆栈溢出问题与我的问题相同。但是,接受的答案通过按索引引用数组中的对象来解决问题。我不相信我有能力做到这一点。因此,要使用与其他问题相同的示例文档......
{
"id": "SalesOrder2",
"ponumber": "PO15428132599",
"OrderDate": "2005-07-01T00:00:00",
"DueDate": "2005-07-13T00:00:00",
"ShippedDate": "2005-07-08T00:00:00",
"AccountNumber": "Account2",
"SubTotal": 6107.082,
"TaxAmt": 586.1203,
"Freight": 183.1626,
"TotalDue": 4893.3929,
"DiscountAmt": 1982.872,
"Items": [
{
"Id": 1,
"OrderQty": 3,
"ProductCode": "A-123",
"ProductName": "Product 1",
"CurrencySymbol": "$",
"CurrencyCode": "USD",
"UnitPrice": 17.1,
"LineTotal": 5.7
},
{
"Id": 2,
"OrderQty": 2,
"ProductCode": "A-456",
"ProductName": "Product 2",
"CurrencySymbol": "$",
"CurrencyCode": "USD",
"UnitPrice": 10,
"LineTotal": 20
}
],
"_rid": "BsMkAMc43s4CAAAAAAAAAA==",
"_self": "dbs/BsMkAA==/colls/BsMkAMc43s4=/docs/BsMkAMc43s4CAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-e136-0dbec04601d7\"",
"_attachments": "attachments/",
"_ts": 1637760030
}
Run Code Online (Sandbox Code Playgroud)
我无法保证 …