2011-01-13 11 views
9

Przypuszczam, że wszyscy, którzy grali z Cassandrą, przeczytali już artykuł this.Mapowanie Cassandra Super Kolumny

Próbuję stworzyć mój schemat na CassandraCli, ale mam wiele problemów, czy ktoś może mnie poprowadzić we właściwy sposób? Próbuję utworzyć podobną strukturę, jak rodzina kolumn Komentarze z tego artykułu.

W terminalu CassandraCli wpisuję:

create column family posts with column_type = ‘Super’ and comparator = ‘AsciiType’ and subcomparator = TimeUUIDType; 

To działa dobrze, nie ma doc mówi mi, że jeśli dodać column_metadata przypisują te będą dla super kolumn bo moja rodzina kolumna jest typu Super, nie mogę znaleźć, jeśli prawdą jest, więc:

create column family posts with column_type = ‘Super’ and comparator = ‘AsciiType’ and subcomparator = ‘TimeUUIDType’ and column_metadata = [{column_name:'body'}]; 

próbuję utworzyć takie samo jak kolumny rodziny komentarza artykułu, ale gdy próbuję wypełnić

set posts['post1'][timeuuid()][body] = ‘Hello I am Goku!’; 

mam:

Nieprawidłowy UUID ciąg: ciało

Chyba dlatego wybrałem subcomparator być typu timeuuid a ciało jest ciągiem znaków, powinny być timeuuid, więc jak moje kolumny wewnątrz super kolumny, która jest typem timeuuid, może przechowywać kolumny z nazwami typu string, gdy tworzone są komentarze do artykułu?

Dzięki

+0

+1 dla kogoś z przedstawicielem 1 zadającym pytanie o Cassandrę. Odświeża się, gdy ktoś interesuje się czymś innym niż SQL ... – SyntaxT3rr0r

Odpowiedz

0

Próbowałaś cytując 'body'?

set posts['post1'][timeuuid()]['body'] = ‘Hello I am Goku!’; 
5

Myślę, że zmieniłeś, do czego mają zastosowanie opcje typ_certyfikatu i typ_podsumowania. W rodzinach z super-kolumną parametr comparator_type stosuje się do nazw super-kolumn, a parametr subcombparator_type odnosi się do nazw pod-kolumny.

Przełącz typy komparatorów, a Twój pierwszy przykład powinien działać.

0

Próbowałem:

set posts[1][timeuuid()]['body'] = 'Hello I am Goku!'; 

to działało ...

1

set posts[1][timeuuid()][utf8('body')] = 'Hello I am Goku!';

Prawidłowa odpowiedź powinna być tak.

: p