2012-12-18 9 views
11

CQL 3 umożliwia określenie „związek” klucza głównego za pomocą określenia takiego:Czy rodzina kolumn Cassandra/CQL3 może mieć klucz partycji złożonej?

CREATE TABLE timeline (
    user_id varchar, 
    tweet_id uuid, 
    author varchar, 
    body varchar, 
    PRIMARY KEY (user_id, tweet_id) 
); 

ze schematem, jak to klucz przegroda (przechowywanie klucza rząd silnika) składa się z wartości user_id, natomiast tweet_id zostanie wkomponowana w nazwę kolumny. Zamiast tego szukam klucza partycji (klucza wiersza silnika magazynu), aby mieć wartość złożoną, taką jak id_użytkownika: tweet_id. Oczywiście mogłem zrobić coś takiego jak key = user_id + ':' + tweet_id w mojej aplikacji, ale czy jest jakiś sposób, aby CQL 3 zrobił to dla mnie?

Odpowiedz

15

Właściwie tak, możesz. Że funkcjonalność została dodana w tym bilecie:

https://issues.apache.org/jira/browse/CASSANDRA-4179

Format dla ciebie byłoby:

CREATE TABLE timeline (
    user_id varchar, 
    tweet_id uuid, 
    author varchar, 
    body varchar, 
    PRIMARY KEY ((user_id, tweet_id)) 
); 
+0

Dobrze wiedzieć! Zaktualizowałem powyższą odpowiedź, aby uniknąć nieporozumień - i wznowiłem twoje. :) –

+0

I tak dostępne w Cassandra w wersji 1.2.0. – Raedwald

2

Do 1.2 wychodzi, odpowiedź brzmi nie. Klucz partycji zawsze będzie pierwszym komponentem. Jak już powiedziałeś, sposobem na zrobienie tego byłoby samodzielne utworzenie klucza złożonego. Nie powinieneś tego unikać, ponieważ jest dość powszechny.

Powiązane problemy