W Cassandry, mogę utworzyć kompozytowy klucza partycji, oddzielną od mojego klucza klastrowego:Zapytania Cassandrę przez częściowego podziału klucza
CREATE TABLE footable (
column1 text,
column2 text,
column3 text,
column4 text,
PRIMARY KEY ((column1, column2))
)
Jak rozumiem, quering kluczem partycja jest niezwykle wydajny (najbardziej wydajna?) metoda pobierania danych. Nie wiem jednak, czy sprawdzenie kwerendy za pomocą tylko części złożonego klucza partycji jest skuteczne.
W MSSQL byłoby to skuteczne, o ile uwzględnione są komponenty zaczynające się od pierwszego (kolumna1 zamiast kolumny2, w tym przykładzie). Czy tak też jest w przypadku Cassandry? Czy wysyłanie zapytań o wiersze oparte na kolumnie 1 jest bardzo wydajne?
Jeśli chcesz zapytać tylko o część klucza podstawowego, możesz zdefiniować go jako PRIMARY KEY (kolumna1, kolumna2). Oznacza to jednak, że partycje (w których przechowywane są dane) są określone tylko przez kolumnę1. Może to skutkować gorącymi węzłami lub innymi problemami w zależności od liczności kolumny1. Jeśli podasz więcej szczegółów na temat swojego schematu (w szczególności to, co reprezentują kolumny 1 i kolumna 2), możemy zaproponować ci skuteczny środek pośredni. – mildewey
Poszukuję tutaj ogólnej strategii, a nie konkretnego zalecenia. Jednak moim prawdziwym problemem nie jest to, że będę miał hotspoty, ale w pewnym momencie przekroczę limit kolumny o wielkości 2 miliardów, ponieważ używam również klucza klastrowania (znacznika czasu). – Mark
@mildewey również, aby było całkowicie jasne, pytałem o kwerendy oparte na części * klucza * partycji, a nie części klucza * podstawowego *. Jest możliwe, w pewnym sensie, użycie klauzuli IN na ostatniej części klucza partycji. Jest to wystarczające dla mojego przypadku użycia. – Mark