Wyrażenia filtrów DynamoDB: wszystko, co musisz wiedzieć

Wyrazenia Filtrow Dynamodb Wszystko Co Musisz Wiedziec



Wyrażenia filtrów są używane w funkcji No-SQL DynamoDB, podobnie jak klauzule WHERE, które są powszechne w bazach danych SQL. Ponieważ jednak DynamoDB jest bazą danych No-SQL, wyrażenia filtrów zachowują się zupełnie inaczej niż klauzule WHERE ze względu na charakter i strukturę baz danych No-SQL.

Ten artykuł koncentruje się na wyrażeniach filtrów. Dlatego zdefiniujemy wyrażenia filtrujące, wyjaśnimy, dlaczego i kiedy mają one zastosowanie, oraz przedstawimy przewodnik krok po kroku, jak ich używać, na odpowiednich przykładach.

Czym są wyrażenia filtrów?

Wyrażenia filtrujące to popularna technika filtrowania danych w DynamoDB podczas operacji Zapytania i Skanowania. W DynamoDB prawidłowe modelowanie i organizacja danych opiera się na filtrowaniu. Podczas gdy większość aplikacji zawsze ma mnóstwo zapisanych danych, możesz pilnie potrzebować elementu z ogromnego bałaganu.







Twoja zdolność do pobierania poprawnych danych zawsze, gdy ich potrzebujesz, zależy od możliwości filtrowania Twojej bazy danych i właśnie w tym zakresie pomagają wyrażenia filtrujące. Określają wyniki w elemencie zapytania, które mają zostać zwrócone, ponieważ odrzucają pozostałe elementy.



Możesz zastosować wyrażenia filtrujące w filtrach po stronie serwera do atrybutów elementu po zakończeniu operacji zapytania, ale zanim serwer zwróci wyniki wywołania zapytania. Oznacza to, że twoje Query nadal zużywa taką samą pojemność odczytu, niezależnie od tego, czy używasz wyrażenia filtrującego.



Poza tym, podobnie jak w przypadku zwykłych operacji Query, limit 1 MB danych dla operacji Query ma miejsce przed oceną operacji wyrażeń filtrujących. Możesz użyć tej operacji, aby zmniejszyć ładunek, wyszukać określone elementy oraz poprawić prostotę i czytelność podczas tworzenia aplikacji.





Filtruj składnię wyrażeń i przykłady

Warto zauważyć, że zarówno wyrażenia filtrów, jak i wyrażenia klucza używają tej samej składni. Poza tym wyrażenia filtrów i wyrażenia warunków mogą również używać tych samych funkcji, komparatorów i operatorów logicznych.

Inne operatory filtrujące wyrażenia, których można użyć, to także operator CONTAINS, operator OR, operator nierówności (), operator IN, operator BETWEEN, operator BEGINS_WITH, operator SIZE i operator EXISTS.



Przykład 1: Wyszukiwanie przy użyciu kluczy podstawowych AWS CLI i DynamoDB

Ten przykład wysyła zapytanie do tabeli Muzyka o określony gatunek (klucz partycji) i określonego wykonawcę (klucz sortowania). Narzędzie zwraca wynik tylko dla elementów pasujących do określonego klucza partycji i klucza sortowania dla utworów z największą liczbą wyświetleń.

Możesz określić liczbę widoków (#v) w poleceniu. Na przykład oznaczamy nasz minimalny limit 1000 wyświetleń, aby zasugerować, że przywrócone zostaną tylko wyniki dla utworów, które mają ponad 1000 wyświetleń.

$ aws zapytanie dynamodb \
--Nazwa tabeli Muzyka \
--wyrażenie-warunku-klucza „Gatunek = :fn i Artysta = :sub” \
--filtr-wyrażenie '#v >= :num(1000)' \
--nazwy-atrybutów-wyrażeń '{'#v': 'Widoki'}' \
--wartości-atrybutów-wyrażeń plik: // wartości.json

Przykład 2: Używanie AWS CLI z wyrażeniem warunkowym

Możemy zrestrukturyzować to samo zapytanie, co w poprzednim przykładzie, ale teraz z kluczami warunkowymi obok naszych filtrów. Nie zawiera klucza sortowania. Zamiast tego pobiera wszystkie rekordy określonego artysty z ponad 1000 wyświetleń. Można go również zrekonstruować, aby dostarczał zamówienia powyżej podanej liczby dla określonej nazwy użytkownika (identyfikator_klienta).

$ aws zapytanie dynamodb \
--Nazwa tabeli Muzyka \
--wyrażenie-warunku-klucza 'Nazwa użytkownika = :nazwa użytkownika' \
--filtr-wyrażenie 'Kwota > :kwota' \
--wartości-atrybutów-wyrażeń '{
':username': { 'S': 'artysta' },
':kwota': { 'N': '1000' }
}'
\
$LOKALNE

Przykładowy wynik wygląda następująco:

Podana ilustracja pokazuje, że spośród 56 tytułów utworów tego samego wykonawcy tylko siedem utworów ma ponad 1000 wyświetleń. Jednak skróciliśmy liczbę dla celów zwięzłości i uwzględniliśmy tylko pierwszy i ostatni wynik na liście.

Przykład 3: Używanie wyrażeń filtru z operatorem No-Equal ().

W poniższym narzędziu Java chcemy zapytać naszą tabelę (Kolekcja filmów) o wszystkie filmy, które nie są równe „Filmowi X”. Upewnij się, że używasz wyrażenia filtrującego z atrybutem (#nazwa) obok wartości atrybutu wyrażenia (:nazwa), jak pokazano na poniższej ilustracji:

const AWS = wymagaj ( 'aws-sdk' ) ;
AWS.config.update ( { region: 'eu-zachód-1' } ) ;
const dynamodb = nowy AWS.DynamoDB.DocumentClient ( ) ;

zmienne parametry = {
Nazwa tabeli: „kolekcja filmów” ,
KeyConditionExpression: '#PK = :PK' ,
Wyrażenie filtru : '#Nazwa nazwa' , ( filtruj wyrażenie )
Nazwy atrybutów wyrażenia: { '#PK' : 'PK' , '#nazwa' : 'nazwa' } , ( wyrażenie warunkowe )
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':nazwa' : „Film X”
}
} ;

dynamodb.query ( parametry, funkcjonować ( chyba dane ) {
jeśli ( błądzić ) log konsoli ( błądzić ) ;
w przeciwnym razie log konsoli ( dane ) ;
} ) ;

Przykład 4: Używanie wyrażeń filtrów z operatorem skanowania

Podczas gdy poprzednie polecenie używa <> do pobierania tylko tych elementów, które nie są równe nazwie filmu o nazwie Movie X, upewnij się, że użyłeś tutaj kluczowych wyrażeń warunkowych razem z wyrażeniem filtrującym. Wynika to z faktu, że nie można filtrować danych w operatorze Query bez użycia kluczowego wyrażenia warunkowego.

zmienne parametry = {
Nazwa tabeli: „kolekcja filmów” ,
Wyrażenie filtru : 'PK = :PK i #nazwa  :nazwa' ,
Nazwy atrybutów wyrażenia: { '#nazwa' : 'nazwa' } ,
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':nazwa' : „Film X”
}
} ;

dynamodb.scan ( parametry, funkcjonować ( chyba, dane ) {
jeśli ( błądzić ) log konsoli ( błądzić ) ;
w przeciwnym razie log konsoli ( dane ) ;
} ) ;

Wniosek

To już koniec naszego samouczka dotyczącego DynamoDB dotyczącego wyrażeń filtrujących. Możesz użyć wyrażeń filtrujących, aby pobrać zestaw preferowanych danych, przefiltrować pobrane dane po skanowaniu lub zapytaniu lub zwrócić zestaw danych klientowi. Chociaż ma zastosowanie z szeregiem narzędzi, istnieją przypadki, w których użycie wyrażeń filtrujących jest nieopłacalne. Na przykład możesz ich używać tylko wtedy, gdy masz odpowiedni model danych, gdy używasz klucza podstawowego i podczas wyodrębniania dużych porcji danych.