2012-03-30 18 views
-1

Wie kann ich verschachtelte Supercolumn (bedeutet Superspalte in einer Superspalte) in Cassandra mit Hector API einfügen. Unten ist der Code für die einfache Super-Spalte und es funktioniert gut. Aber ich möchte auch eine Superspalte hinzufügen.Einfügen geschachtelte Supercolumn

Mutator<String> mutator = HFactory.createMutator(keyspaceOperator, stringSerializer); 
List<HColumn<String,String>> colsList = new ArrayList<HColumn<String,String>>(); 
colsList.add(HFactory.createStringColumn("name", "tarun")); 
colsList.add(HFactory.createStringColumn("age", "25")); 
mutator.insert("deviceId", CF_SUPER, HFactory.createSuperColumn("10000", 
       colsList,stringSerializer, stringSerializer, stringSerializer)); 

Antwort

1

Sie können keine Super-Spalte in eine andere Super-Spalte einfügen. Sie müssen eine SuperColumnFamily verwenden, die eine Sammlung von Super-Spalten enthält. Siehe this tollen Artikel von einem der Leute, die Cassandra bei Digg für eine gute Erklärung des Datenmodells eingerichtet haben.

+0

Ich habe diesen Artikel bereits gelesen und weiß, dass wir Super-Spalte in eine andere setzen können. Aber ich möchte dies über Hector Java API für Cassandra tun. –

+0

Wissen Sie, wie Sie mit hector Superspaltenfamilien hinzufügen können. –

+0

Ich bin nicht vertraut mit der Hector-Bibliothek - ich benutze Pelops und denke, es ist ein bisschen einfacher zu grok - jedoch ist es in der Regel gute Praxis, Ihr Datenmodell im Voraus zu definieren und erstellen Sie die Spaltenfamilien und Super-Familien vor Starten des Systems. Ich bevorzuge persönlich ein Skript und die Befehlszeile dafür, anstatt zu versuchen, eine API zu durchlaufen. Es trennt die Zugriffsbedenken von den Datenmodellproblemen und bietet sich für eine leichtere Wartbarkeit an. – FloppyDisk

3

Sie können keine SuperColumn innerhalb einer anderen SuperColumn in Cassandra platzieren. Dies ist keine Einschränkung von Hector, genau so wird Cassandra implementiert.

Als ich mit Cassandra anfing, las ich stundenlang Textbeschreibungen des Datenmodells und meine Augen verglasten sich und ich bekam es nicht. Dann habe ich eine Bilddarstellung gesehen und sofort gegrickt. Schau es dir an: http://www.javageneration.com/wp-content/uploads/2010/05/Cassandra_DataModel_CheatSheet.pdf

+0

Bitte werfen Sie einen Blick auf den folgenden Link, um mehr über den Cassandra-Datenmodus zu erfahren. http://arin.me/blog/wtf-is-a-supercolumn-cassandra-data-model –

+1

Von Ihrem eigenen Link: "Eine SuperColumn ist ein Tupel mit einem binären Namen und einem Wert, der eine Karte mit einem unbegrenzten ist Anzahl der Spalten - angegeben durch den Namen der Spalte. " Um Ihre ursprüngliche Frage zu beantworten - Sie können einfach nicht eine Supercolumn innerhalb einer anderen Supercolumn setzen. Cassandra tut es einfach nicht, also macht Hector natürlich auch nichts. –