2012-06-28 4 views
3

Ma famille de colonnes nécessite deux colonnes composites, le type de données clé est BytesType.Créer deux colonnes composites avec cassandra-cli

Voici la définition de la table à l'aide CQL:

CREATE TABLE stats (
     gid   blob, 
     period  int, 
     tid   blob, 
     sum   int, 
     uniques  blob, 
     PRIMARY KEY(gid, period, tid) 
    ); 

Ce que je veux faire est de créer la famille de la colonne mais avec Cassandra CLI. Voici mon coup de feu.

La structure du premier composé est:

CompositeType(Int32Type, BytesType, AsciiType) 

et il sera détient un nombre entier.

La structure du deuxième composé est:

CompositeType(Int32Type, BytesType) 

et volonté cales BytesType. Je ne suis pas sûr comment définir la deuxième colonne composite dans la commande create column family.

Bien sûr, je suppose que la table créée avec CQL va générer deux colonnes composites.

Répondre

3

Vous ne pouvez avoir qu'un seul comparateur sur une famille de colonnes dans Cassandra. Cela signifie que vous ne pouvez également avoir qu'un type de colonne composite dans la famille de colonnes. Le tableau créé par la déclaration CQL que vous avez utilisé serait en fait utiliser le premier comparateur de type composite que vous mentionnez:

CompositeType(Int32Type, BytesType, AsciiType) 

Ce comparateur peut décrire l'ensemble de votre schéma en raison de la composante « AsciiType » à la fin de votre composite. Ce composant de vos noms de colonne contiendra la chaîne littérale 'sum' ou 'uniques', et la valeur de la colonne correspondra au type en conséquence.

Un exemple en utilisant une notation de style JSON:

<bytes> : {        # a row key in your stats column family 
    (100, <bytes>, "sum") : 100,   # one column in your row 
    (100, <bytes>, "uniques") : <bytes>, 
    (200, <bytes>, "sum") : 200, 
    (200, <bytes>, "uniques") : <bytes> 
} 
<bytes> : {        # another row in the cf 
    ... 
} 
Questions connexes