Почему количество RU меняет размеры моего набора результатов CosmosDB? - PullRequest
0 голосов
/ 16 мая 2018

Это меня совершенно сбило с толку.

Контекст: Я запускаю сохраненный процесс на CosmosDB, который возвращает наборы результатов вместе с токенами продолжения, если существует несколько «страниц» данных (из которых всегда будет хотя бы несколько). Всего в моей коллекции 65 000 записей. Для последней «страницы» токен продолжения должен (и возвращает) возвращаться как NULL из CosmosDB, указывая, что вся моя коллекция была возвращена.

Моя проблема: Когда я установил минимальные значения RU для моей коллекции CosmosDB (400), наборы данных проходят через все вместе с токенами продолжения для следующей страницы, и все в порядке с миром. Как только я поднимаю свои RU (для более быстрого выполнения запроса), токены продолжения проходят нормально для первых нескольких «страниц», но затем внезапно возвращаются как NULL примерно на половине всего набора данных.

Вот мой сохраненный процесс:

function count(continuationToken) {
var filterQuery = 'select c.id from c where c.Type = 0';
var collection = getContext().getCollection();
var maxResult = 900000;
var result = [];
tryQuery(continuationToken);

function tryQuery(nextContinuationToken) {
    var responseOptions = { continuation: nextContinuationToken, pageSize: maxResult };
    if (result.length >= maxResult || !query(responseOptions)) {
        setBody(nextContinuationToken);
    }
}
function query(responseOptions) {
    return collection.queryDocuments(collection.getSelfLink(), filterQuery, responseOptions, onReadDocuments);
}
function onReadDocuments(err, docFeed, responseOptions) {
    if (err) {
        throw 'Error while reading document: ' + err;
    }
    result.push(docFeed);
    if (responseOptions.continuation) {
        tryQuery(responseOptions.continuation);
    } else {
        setBody(null);
    }
}
function setBody(continuationToken) {
    var body = { records: result, continuationToken: continuationToken };        
    getContext().getResponse().setBody(body);
}
}

У кого-нибудь есть идеи относительно того, что здесь может пойти не так? Для меня не имеет смысла, что RU должны влиять на объем данных, возвращаемых из коллекции CosmosDB.

Любая помощь будет принята с благодарностью, спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...