Разница между ключом раздела, указанным в выражении запроса, и опциями подачи в cosmos db - PullRequest
1 голос
/ 04 июня 2019

Я вызываю API "queryDocuments (String collectionLink, String query, Опции FeedOptions)" в cosmos db для выполнения некоторых SQL-запросов с ключом раздела. Интересно, где мне указывать ключ раздела, строку запроса или опции подачи?

С точки зрения производительности, мне интересно, должен ли я указывать ключ раздела в параметре параметров feedoptions

Как разница queryDocuments (collectionLink, "SELECT * FROM root WHERE id = xxx AND partitionkey = XXX", null); или же feedoptions.setpartitionkey (ПК); queryDocuments (collectionLink, "SELECT * FROM root WHERE id = xxx", feedoptions);

Спасибо за ваш ответ!

1 Ответ

0 голосов
/ 05 июня 2019

Я предлагаю вам указать ключ разделения в FeedOptions. Я провел микротест, чтобы проверить производительность обоих решений.

Первый:

String name = "A";
FeedResponse<Document> feedResponse = client
      .queryDocuments("dbs/db/colls/part",
                        "SELECT * FROM c WHERE c.name ='" + name + "'", null);
System.out.println(feedResponse.getRequestCharge());

Второй:

FeedOptions queryOptions = new FeedOptions();
PartitionKey partitionKey = new PartitionKey("/A");
queryOptions.setPartitionKey(partitionKey);
FeedResponse<Document> feedResponse1 = client
      .queryDocuments("dbs/db/colls/part",
                    "SELECT * FROM c ", queryOptions);
System.out.println(feedResponse1.getRequestCharge());

Данные испытаний:

enter image description here

Выход:

enter image description here

Тест показывает, что второй из них потребляет меньше RU, чем первый. Мои выборочные данные слишком малы, я предполагаю, что разрыв между ними будет увеличиваться с увеличением данных.

...