2013-06-04 12 views
5

Wypij stół z około 20 milionami rzędów w Cassandrze.Zdobądź ostatni rekord w Cassandrze

Tabela jest uporządkowana według kolumny primary_key, która jest łańcuchem. Używamy "ByteOrderedPartitioner", więc wiersze są sortowane przez primary_key, a nie hash kolumny primary_key.

Jaki jest dobry sposób na uzyskanie ostatniego rekordu w tabeli?

Dziękuję bardzo!

+0

Radzimy nie używać ByteOrderedPartitioner powodu konserwacji wymagane, gdy zmiany danych dystrybucji lub skalowania klastra. Jeśli to możliwe, należy zmienić model danych, aby zamiast tego używać zapytań dotyczących kolumn. – Richard

Odpowiedz

1

Jeśli dla "ostatniego rekordu" rozumie się ten zamówiony jako ostatni, nie myślę, że można to zrobić jak "GET", trzeba skanować wiersze. Najlepsze, co możesz zrobić, Afaiku, wybierz dobry zakres do skanowania (dobry klawisz startowy) zgodnie z twoim kluczem podstawowym.

Od datastax docs.

„Korzystanie z uporządkowaną partycjonowania pozwala zamówione skany według klucza podstawowego Oznacza to, że można skanować wiersze tak, jakby były w ruchu kursora pośrednictwem tradycyjnych indeksu Jeśli na przykład. Twoja aplikacja ma nazwy użytkownika jako klucz wiersza, możesz skanować wiersze dla użytkowników, których nazwy wchodzą w zakres między Jake i Joe.Tego typu zapytanie nie jest możliwe przy użyciu losowo podzielonych na partycje numerów wierszy , ponieważ klucze są przechowywane w kolejności ich Skrót MD5 (nie po kolei). "

Jeśli znajdziesz lepsze rozwiązanie, daj mi znać.

Pozdrawiam, Carlo

Powiązane problemy