Понимание "x-ms-request-charge" и "x-ms-total-request-charge" в CosmosDB Gremlin API - PullRequest
0 голосов
/ 14 апреля 2020

Я использую пакет gremlin (version 3.4.6) для запроса моей учетной записи Cosmos DB, ориентированной на Gremlin (Graph) API. Код довольно прост:

const gremlin = require('gremlin');

const authenticator = new gremlin.driver.auth.PlainTextSaslAuthenticator(
`/dbs/<database-name>/colls/<container-name>`,
"<my-account-key>"
);
const client = new gremlin.driver.Client(
    "wss://<account-name>.gremlin.cosmosdb.azure.com:443/",
    {
        authenticator,
        traversalsource : "g",
        rejectUnauthorized : true,
        mimeType : "application/vnd.gremlin-v2.0+json"
    }
);

client.submit("g.V()")
.then((result) => {
    console.log(result);
})
.catch((error) => {
    console.log(error);
});

Код работает отлично, и я получаю результат обратно. У объекта результата есть свойство attributes, которое выглядит примерно так:

{
    "x-ms-status-code": 200,
    "x-ms-request-charge": 0,
    "x-ms-total-request-charge": 123.85999999999989,
    "x-ms-server-time-ms": 0.0419,
    "x-ms-total-server-time-ms": 129.73709999999994,
    "x-ms-activity-id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Если вы заметили, есть две вещи, связанные с платой за запрос (в основном, насколько дорогой мой запрос): x-ms-request-charge и x-ms-total-request-charge.

У меня есть три вопроса по этому поводу:

  1. В чем разница между ними?
  2. Я заметил, что x-ms-request-charge всегда приходит как 0 и x-ms-total-request-charge как ненулевое значение. Это почему? и
  3. Какое значение я должен использовать для расчета платы за запрос? Я предполагаю использовать x-ms-total-request-charge, так как это ненулевое значение.

И пока мы на этом, я был бы признателен, если бы кто-то мог сказать мне разницу между x-ms-server-time-ms и x-ms-total-server-time-ms.

1 Ответ

1 голос
/ 16 апреля 2020

Эти коды ответов указаны c для нашего Gremlin API и задокументированы здесь: Azure Заголовки ответов сервера Cosmos DB Gremlin .

Для одного запроса сервер Gremlin может отправить ответ с несколькими частичными ответными сообщениями (слабо эквивалентными странице, но возвращенными в виде потока вместо нескольких запросов / ответов с продолжениями, как это делается с SQL API).

  • x-ms- request-charge - это RU, используемые для разрешения одного частичного ответа.
  • x-ms-total-request -charge выполняет общее количество RU, использованных до текущего частичного ответа. Таким образом, при отправке окончательного сообщения это будет означать общее количество RU, использованных для всего запроса.

В зависимости от реализации драйвера клиента Gremlin, каждый частичный ответ может быть представлен вызывающей стороне ИЛИ драйвер будет накапливать все ответы внутри и возвращать окончательный результат. Учитывая последнее, это побудило нас добавить x-ms-total-request-charge, чтобы реализованные таким образом драйверы могли по-прежнему разрешать общую стоимость запроса.

Спасибо за вопрос и надеюсь, что это полезно.

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