Muszę wykonać kwerendę IN na klucz atrybut. Ponieważ, Query nie zapewnia warunku IN, planuję użyć skanowania. Czy SCAN na kluczowym atrybucie przeskanuje całą tabelę?SKAN na klucz atrybut w DynamoDB
Odpowiedz
Czy skanowanie na kluczowym atrybucie przeskanuje całą tabelę?
Tak, patrz Query and Scan in Amazon DynamoDB:
skanowania
Operacja skanowania skanuje całą tabelę. Możesz określić filtry, aby zastosować do wyników, aby zawęzić wartości zwrócone do ciebie, po pełnym skanowaniu . Amazon DynamoDB nakłada limit 1 MB na skanowanie (obowiązuje limit , zanim wyniki zostaną odfiltrowane). Skanowanie może spowodować brak danych tabeli spełniających kryteria filtru.
W szczególności, nie ma żadnej różnicy pomiędzy kluczem i innych kluczowych cech w miarę Scan API to dotyczy, czyli po prostu zapewnić pożądane atrybuty po imieniu, niezależnie od ich wykorzystania jako atrybut stanowiącymi Primary Key jak dobrze lub nie:
AttributesToGet
tablicę nazw atrybutów. Jeśli nie podano nazw atrybutów, wszystkie atrybuty zostaną zwrócone. Jeśli niektóre atrybuty nie zostaną znalezione, nie pojawią się w wyniku.
Szkoda. Jaka byłaby różnica kosztów między skanowaniem a zapytaniem o 100 pasujących rekordów na milion zestawów rekordów? –
@Mani: Najprawdopodobniej ogromny: _SCAN_ po prostu nie jest przeznaczony do użycia w ten sposób i ma znaczący wpływ na koszty/wydajność w przypadku ogromnych zestawów rekordów, jeśli jest używany bez uwzględnienia tego w konkretny sposób - obliczenie to jest dość złożone, a także odpowiednio, przeczytaj za pośrednictwem pierwszego wpisu na blogu Chrisa Moyera w [Amazon DynamoDB] (http://blog.coredumped.org/2012/01/amazon-dynamodb.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ChrisMoyer+%28Chris+Moyer%29) do analizy, przy okazji próbki dla miliona zestawów rekordów i myśli, jak z kolei rozwiązać ten problem. –
Czy praca dla Ciebie nie byłaby batchGetItem?
W rzeczywistości jednostka ma atrybut klucz i zakres. Tak więc jest to IN i pomiędzy warunkiem dla kluczowych atrybutów. BTW, jak korzystać z batchgetitem z klasami pojo? –
@ManiDoraisamy z rozszerzonym wymaganiem Sugerowałbym wystawienie zapytania na wartość skrótu na liście IN. napisz małą aplikację, która łączy te wyniki zapytania i działa w EC2 amazonka, a Ty powinieneś złagodzić wzrost opóźnienia. alternatywnie możesz dać to drugie zadanie EMR Amazona, ponieważ _Amazon DynamoDB integruje się również z Amazon Elastic MapReduce_. – Mikha
@ManiDoraisamy na twoje drugie pytanie odpowiedź brzmi: nie. 'BatchGetItemRequest' wyświetla listę maksymalnie 100' Key's. 'Klucz' zawiera' AttributeValue' zarówno dla klawisza skrótu, jak i klawisza zakresu, aby precyzyjnie zidentyfikować rekord w tabeli. Przy okazji, zapis jest w zasadzie "mapą" i Twoim obowiązkiem jest przekształcenie twoich wizów w te iz nich. – Mikha
Od kwietnia 2014 roku możesz używać IN w zapytaniach https://aws.amazon.com/blogs/aws/improved-queries-and-updates-for-dynamodb/ – emilyk