存储过程延续

本文关键字:延续 存储过程 | 更新日期: 2023-09-27 18:08:46

我正在尝试将DocumentDB作为新应用程序的可能数据存储。该应用程序必须处理大量数据,所以我使用数据迁移工具将大量文档放入集合中。

来自我的应用程序的大多数查询将被聚合和求和。所以我使用documentdb-lumenize。从c#调用存储过程的代码示例让我做这样的事情:

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值表明我得到了价值6000个文档的聚合数据。集合中有一百万个文档(我想测试大!)

我在结果中看到"continuation"值。但是storedproceurerresponse不像DocumentQuery类那样有ExecuteNextAsync方法。如何使用DocumentDB API来请求数据的下一部分?

存储过程延续

我是documentdb-lumenize的作者。如果您只返回作为唯一参数返回的内容,那么documentdb-lumenize进程将知道如何处理延续令牌。您必须一直调用它,直到延续令牌返回空。

那就是说,我真的很惊讶它在一次往返中只飞了6000英里。我每次往返一般能拿到2 -5万美元。也许你有更低规格的收藏?也许它正在做一个无索引的全扫描?

如果你想要更多的1:1帮助,请在GitHub repo中提交一个issue。