Поддерживает ли cosmos SQL способ запроса с использованием AltLink? - PullRequest
0 голосов
/ 11 апреля 2019

Мне интересно, есть ли способ запроса с использованием AltLink, а не SelfLink?

SELECT * FROM c
--WHERE c._alt = 'dbs/DefaultDb/colls/DefaultColl/docs/cd9d67d5-b82e-4ec5-aad3-91e784906f6e'
WHERE c._self = 'dbs/Rr4MAA==/colls/Rr4MAOW90GI=/docs/Rr4MAOW90GIBAAAAAAAAAA==/'

ОБНОВЛЕНИЕ:

Причина, по которой я ищу способ использовать AltLink вSQL вызван тем, что простой запрос документа по его идентификатору будет постоянно расти в цене по мере роста коллекции.Где .net SDK позволяет использовать AltLink для получения документа, а стоимость почти всегда составляет от 1 до 1,5 RU.

RUCost.png

1 Ответ

0 голосов
/ 11 апреля 2019

Мне нужно кое-что прояснить для вас, прежде чем вы поймете, почему то, о чем вы просите, не имеет смысла.

Прямое чтение с использованием ссылки self / alt и значения ключа разделаВСЕГДА будет более эффективным, чем запросы со значением self / alt link и ключом раздела.Космос работает именно так.

Причина, по которой вы просите, вообще невозможна, в том, что значение id не уникально в коллекции.Вы можете иметь неограниченное количество элементов с одинаковым id, если они находятся в другом логическом разделе (это означает, что значение id уникально только в его собственном логическом разделе).

Это означает, что в таком сценарии ваш AltLink для каждого отдельного документа в коллекции будет точно таким же.Как сервер узнает, какой документ вы действительно хотите?Это также верно в отношении SelfLink, который уникален для каждого документа, поскольку использует идентификаторы ресурсов.Однако сервер не может знать, где находится этот идентификатор ресурса, если вы не укажете его на логический раздел.

Способ, которым вы должны делать то, о чем вы просите, - это использовать методы ReadSDK или метод Read API REST вместе со значением ключа раздела, которое вы ищете.

...