Mam kolekcję Cosmos DB z licznymi partycjami opartymi na identyfikatorze urządzenia. Często mam przypadki użycia, które wymagają pobrania najnowszego dokumentu przez określony identyfikator urządzenia. Obecnie używam funkcjonalność SELECT TOP 1
dostępne w DocumentDB API, jak pokazano poniżej, aby to osiągnąć:Cosmos DB (DocumentDB API): Wydajny sposób na zapytanie o najnowszy dokument według identyfikatora partycji?
SELECT TOP 1 *
FROM c
WHERE c.deviceId = 5
ORDER BY c.timeStamp DESC
wyniki to podejście w zwiększonej konsumpcji RU/s oraz zmniejszenie wydajności jak gromadzenie i poszczególne partycje stają się większe, jak można się było spodziewać. Jako tymczasowe remedium na ten problem, dodałem dodatkowy gdzie klauzule ograniczenia zakresu zapytania przez timestamp:
SELECT TOP 1 *
FROM c
WHERE c.deviceId = 5
AND c.timeStamp >= 1506608558 --timestamps are unix/epoch based to optimize indexing
AND c.timeStamp <= 1506694958
ORDER BY c.timeStamp DESC
chciałbym wiedzieć, czy istnieje lepszy sposób, aby wybrać ostatnią dokumentu przez ID partycji, jako dodatek do tego, gdzie klauzula może spowodować nieoczekiwane lub brakujące wyniki.
Dzięki @Mr Slim, mogę skończyć się tę trasę, ale mam nadzieję, że to alternatywne podejście, które dostarczy najnowszy odczyt bez konieczności utrzymywania ta dodatkowa dodatkowa kolekcja. –
Powodzenia. Jeśli znajdziesz alternatywę, opublikuj tutaj, ponieważ chciałbym zobaczyć alternatywne podejście. –