我正在尝试将DocumentDB作为新应用程序的可能数据存储。该应用程序必须处理大量数据,因此我使用数据迁移工具将大量文档放入一个集合中。
我的应用程序中的大多数查询都是聚合和汇总的。所以我使用了documentdb-lumenize。用于从C#调用存储过程code sample让我执行如下操作:
var configString = @"{
cubeConfig: {
groupBy: 'year',
field: 'Amount',
f: 'sum'
},
filterQuery: 'SELECT * FROM TestLargeData t'
}";
var config = JsonConvert.DeserializeObject<object>(configString);
var result = await _client.ExecuteStoredProcedureAsync<dynamic>("my/sproc/link", config);我得到的结果如下所示:
{
"cubeConfig": {
"groupBy": "year",
"field": "Amount",
"f": "sum"
},
"filterQuery": "SELECT * FROM TestLargeData t",
"continuation": "-RID:rOtjAPc4TgBxFwAAAAAAAA==#RT:6#TRC:6000",
"stillQueueing": false,
"savedCube": {
"config": {
"groupBy": "year",
"field": "Amount",
"f": "sum"
},
"cellsAsCSVStyleArray": [
[
"year",
"_count",
"Amount_sum"
],
[
2006,
4825,
1391399555.74
],
[
2007,
1175,
693886378
]
],
"summaryMetrics": {}
},
"example": {
"year": 2007,
"SomeOtherField1": "SomeOtherValue1",
"SomeOtherField2": "SomeOtherValue2",
"Amount": 12000,
"id": "0ee80b66-7fa7-40c1-9124-292c01059562",
"_rid": "...",
"_self": "...",
"_etag": "\"...\"",
"_attachments": "attachments/",
"_ts": ...
}
}_count值表明我得到了6,000个文档的聚合数据。集合中有一百万个文档(我想测试一下big!)
我在结果中看到了"continuation“值。但是StoredProcedureResponse没有像DocumentQuery类那样的ExecuteNextAsync方法。如何使用DocumentDB应用程序接口请求下一部分数据?
发布于 2016-09-24 05:05:07
我是documentdb-lumenize的作者。如果您只是返回作为唯一参数返回的内容,那么documentdb-lumenize存储过程将知道如何处理继续令牌。您将不得不继续调用它,直到继续令牌返回为空。
也就是说,我真的很惊讶它在一次往返中只完成了6000次。我一般每次往返能拿到20-50K。也许你有一个较低规格的收藏?也许它正在做一个无索引的全扫描?
如果您需要更多关于此问题的1:1帮助,请在GitHub存储库中提交问题。
https://stackoverflow.com/questions/39669376
复制相似问题