Nie rozumiem, jaki jest klucz podstawowy zakresu -
i jak to działa?
Co rozumieją przez „nieuporządkowany indeks skrótu w atrybucie skrótu i posortowany indeks zakresu w atrybucie zakresu”?
Nie rozumiem, jaki jest klucz podstawowy zakresu -
i jak to działa?
Co rozumieją przez „nieuporządkowany indeks skrótu w atrybucie skrótu i posortowany indeks zakresu w atrybucie zakresu”?
„ Klucz główny skrótu i zakresu ” oznacza, że pojedynczy wiersz w DynamoDB ma unikalny klucz główny złożony zarówno z skrótu, jak i klucza zakresu . Na przykład z kluczem skrótu X i klawiszem zakresu Y , kluczem podstawowym jest XY . Możesz także mieć wiele kluczy zakresu dla tego samego klucza skrótu, ale kombinacja musi być unikalna, na przykład XZ i XA . Użyjmy ich przykładów dla każdego rodzaju tabeli:
Klucz główny skrótu - klucz podstawowy składa się z jednego atrybutu, atrybutu skrótu. Na przykład tabela ProductCatalog może mieć ProductID jako swój klucz podstawowy. DynamoDB buduje nieuporządkowany indeks skrótu na tym atrybucie klucza podstawowego.
Oznacza to, że każdy wiersz jest wyłączony z tej wartości. Każdy wiersz w DynamoDB będzie miał wymaganą, unikalną wartość dla tego atrybutu . Nieuporządkowany indeks skrótu oznacza to, co mówi - dane nie są uporządkowane i nie daje się żadnych gwarancji dotyczących sposobu przechowywania danych. Nie będzie w stanie dokonać zapytania na indeksie nieuporządkowanej takich jak zrozumcie mnie wszystkie wiersze, które mają większą ProductID niż x . Piszesz i pobierasz elementy na podstawie klucza skrótu. Na przykład, Daj mi wiersz z tej tabeli, która ma ProductID X . Pytasz o nieuporządkowany indeks, więc dostajesz się do niego w zasadzie wyszukiwania klucz-wartość, są one bardzo szybkie i wymagają bardzo małej przepustowości.
Klucz główny skrótu i zakresu - klucz podstawowy składa się z dwóch atrybutów. Pierwszy atrybut to atrybut skrótu, a drugi atrybut to atrybut zakresu. Na przykład tabela wątków forum może mieć ForumName i Temat jako klucz podstawowy, gdzie ForumName to atrybut skrótu, a Temat to atrybut zakresu. DynamoDB buduje nieuporządkowany indeks skrótu na atrybucie skrótu i indeks posortowanego zakresu na atrybucie zakresu.
Oznacza to, że kluczem podstawowym każdego wiersza jest kombinacja klucza skrótu i zakresu . Możesz wykonać bezpośrednie pobieranie w pojedynczych wierszach, jeśli masz zarówno klucz skrótu, jak i zakres, lub możesz wykonać zapytanie dotyczące posortowanego indeksu zakresu . Na przykład pobierz Uzyskaj wszystkie wiersze z tabeli za pomocą klawisza skrótu X, które mają klucze zakresu większe niż Y , lub inne zapytania, które mają na to wpływ. Mają lepszą wydajność i mniejsze zużycie pojemności w porównaniu do skanów i zapytań względem pól, które nie są indeksowane. Z ich dokumentacji :
Wyniki zapytania są zawsze sortowane według klucza zakresu. Jeśli typ danych klucza zakresu to Number, wyniki są zwracane w kolejności numerycznej; w przeciwnym razie wyniki są zwracane w kolejności według wartości kodu znaków ASCII. Domyślnie kolejność sortowania jest rosnąca. Aby odwrócić kolejność, ustaw parametr ScanIndexForward na false
Prawdopodobnie przeoczyłem kilka rzeczy, pisząc to i tylko podrapałem się po powierzchni. Istnieje wiele więcej aspektów, które należy wziąć pod uwagę przy pracy z tabelami DynamoDB (przepustowość, konsystencja, pojemności, innych indeksów, dystrybucji kluczy, itp). Przykłady można znaleźć w przykładowych tabelach i na stronie danych .
Ponieważ cała sprawa się miesza, spójrzmy na jej funkcję i kod, aby symulować, co to znaczy
Jedyny sposób, aby uzyskać wiersz jest poprzez klucz podstawowy
getRow(pk: PrimaryKey): Row
Podstawowa struktura danych klucza może być następująca:
Jednak w tym przypadku możesz zdecydować, że klucz podstawowy to klucz partycji + klucz sortowania:
W obu przypadkach otrzymujesz pojedynczy wiersz według klucza podstawowego, jedynym pytaniem jest, czy zdefiniowałeś ten klucz podstawowy jako tylko klucz partycji lub klucz partycji + klucz sortowania
Bloki konstrukcyjne to:
Pomyśl o Przedmiotu jako o rzędzie, a o Atrybucie KV o komórkach w tym rzędzie.
Możesz zrobić (2) tylko wtedy, gdy zdecydujesz, że twoja PK składa się z (HashKey, SortKey).
Bardziej wizualnie, ponieważ jest złożony, tak jak go widzę:
Co się dzieje powyżej. Zwróć uwagę na następujące obserwacje. Jak powiedzieliśmy, nasze dane należą do (Tabela, pozycja, KVAttribute). Następnie każdy przedmiot ma klucz podstawowy. Teraz sposób, w jaki skomponowałeś ten klucz podstawowy, ma znaczenie dla uzyskania dostępu do danych.
Jeśli zdecydujesz, że klucz podstawowy to po prostu klucz skrótu, to świetnie, że możesz z niego wydobyć pojedynczy przedmiot. Jeśli jednak zdecydujesz, że kluczem podstawowym jest hashKey + SortKey, możesz również wykonać zapytanie dotyczące zakresu na kluczu podstawowym, ponieważ otrzymasz swoje przedmioty przez (HashKey + SomeRangeFunction (klawisz zakresu)). Dzięki temu możesz uzyskać wiele elementów za pomocą zapytania o klucz podstawowy.
Uwaga: nie odnosiłem się do indeksów wtórnych.
źródło
Dobrze wyjaśniona odpowiedź została już podana przez @mkobit, ale dodam duży obraz klawisza zakresu i klawisza skrótu.
W prostych słowach
range + hash key = composite primary key
CoreComponents of DynamodbOba mają więc inny cel i razem pomagają w złożonym zapytaniu. W powyższym przykładzie
hashkey1 can have multiple n-range.
Innym przykładem zakresu i skrótu jest gra, użytkownik A(hashkey)
może grać w Ngame(range)
https://www.slideshare.net/InfoQ/amazon-dynamodb-design-patterns-best-practices https://www.slideshare.net/AmazonWebServices/awsome-day-2016-module-4-databases-amazon-dynamodb -and-amazon-rds https://ceyhunozgun.blogspot.com/2017/04/implementing-object-persistence-with-dynamodb.html
źródło
Music
tabelą jeden artysta nie może wyprodukować dwóch piosenek o tym samym tytule, ale niespodzianka - w grach wideo mamy Dooma z 1993 roku i Dooma z 2016 roku en.wikipedia.org/wiki/Doom_(franchise) z tym samym „artystą” ( programista)id Software
.@vnr można pobrać wszystkie klucze sortowania powiązane z kluczem partycji, po prostu używając zapytania za pomocą klucza partycji. Nie ma potrzeby skanowania. Chodzi o to, że klucz partycji jest obowiązkowy w zapytaniu. Klawisz sortowania służy tylko do uzyskania zakresu danych
źródło