Nie jestem niezdecydowany, czy lepiej, pod względem wydajności, używać bardzo wspólnej wartości kolumny (jak Country
) jako klucza partycji dla złożonego klucza podstawowego lub raczej unikalnej wartości kolumny (jak Last_Name
).Cassandra: wybieranie klucza partycji
Patrząc na Cassandra 1.2's documentation about indexes uzyskać to:
"Kiedy używać indeks. Cassandra wbudowanego w indeksach są najlepsze na stole posiadające wiele wierszy, które zawierają wartości indeksowanej Więcej unikalne wartości , które istnieją w konkretnej kolumnie, tym więcej wydatków na zapytania i utrzymanie indeksu . mają średnio na zapytanie i utrzymanie indeksu. Załóżmy na przykład, że masz tabelę użytkowników z miliardem użytkowników i chcesz wyglądać na użytkowników do stanu, w którym przebywali. Wielu użytkowników będzie korzystać z tej samej wartości kolumny dla stanu (np. CA, NY, TX itd.). Byłby to dobry kandydat do indeksu na . „
” Kiedy nie używać indeksu: Nie używać indeksu kwerendy ogromną ilość płyt za niewielką liczbę wyników. Na przykład, jeśli utworzysz indeks na kolumnie , która ma wiele różnych wartości, zapytanie między polami będzie wymagało wielu innych wyników dla bardzo niewielu wyników. W tabeli z miliardem użytkowników, wyszukiwanie użytkowników według ich adresu e-mail (wartość, która zazwyczaj jest unikalna dla każdego użytkownika) zamiast ich stanu, prawdopodobnie będzie bardzo niewydajna: . Prawdopodobnie bardziej wydajne byłoby ręczne utrzymywanie tabeli jako formy indeksu zamiast korzystania z wbudowanego indeksu Cassandra . W przypadku kolumn zawierających unikalne dane, czasem jest to fine performance-mądry, aby używać indeksu dla wygody, tak długo, jak objętość zapytanie do tabeli posiadające kolumny indeksowanej jest umiarkowana i nie pod stałym obciążeniem.”
Looking at the examples from CQL's SELECT dla
„Zapytania złożone klucze podstawowe i sortowania wyników”, widzę coś takiego jak UUID używany jako klucz partycji ... które wskazywałyby, że lepiej jest użyć czegoś raczej unikalny?
Czy to znaczy, „Klucz podziału” jest jeden wiersz, a „grupowanie key_1” i tak dalej, czy wartość zamawiania wewnątrz tym samym wierszu? Dzięki za odpowiedź, to jest odpowiedź wylądowałem po długim poszukiwaniu korelacji między partycjonowania, klucz podziału i związku klucz podstawowy. Z tego co widzę, to jest klucz podziału że bałagan podziału między klastra, a jeżeli jest to przypadkowe, reszta kluczowych składników, tj Klastry key_1 i tak dalej, klucze klastrowania nie wpływają dystrybucji pomiędzy węzłami . –
@RavindranathAkila Klucz klastrowania wpływa na sposób wyrównania kolumn (uporządkowanych) w węźle fizycznym, ale masz rację, że dystrybucja między węzłami zależy wyłącznie od klucza partycjonowania. –
Dzięki Lyuben! To bardzo pomaga! –