2012-02-20 17 views
3

Je viens de commencer mon aventure avec la base de données Cassandra. J'ai réussi à apprendre quelques bases mais ce que je ne comprends toujours pas, c'est comment travailler avec les dates à Cassandra? Par exemple, dans MySQL, nous avons un type datetime pour un champ et nous pouvons interroger (par exemple) tous les champs dont la date de création est inférieure à 2010-01-01. De plus, nous pouvons commander le résultat par champ de date de création. Comment peut-on atteindre la même chose avec Cassandra?Utiliser les dates avec Cassandra

Comment définir la famille de colonnes correspondante et comment l'interroger (CQL) pour obtenir le même résultat?

Répondre

5

Vous pouvez utiliser le type DateType pour définir une colonne de type DateType dans votre famille de colonnes. Vous devriez vraiment lire ceci page, il a la description et l'exemple comment faire la requête de gamme (c'est créationdate < 2010-01-01). Pour la commande, vous pouvez vous référer au SliceRange mais cela couvrira probablement dans le client cassandra déjà. Vous voudrez probablement regarder dans le cassandra client pour faire la requête.

Ceci est un extrait sur comment faire une requête dans cassandra en utilisant le client hector.

// 2010-01-01 
Date date = new Date(1262275200L); 

try 
{ 
    getConnection(); 
    IndexedSlicesQuery<String, String, String> indexedSlicesQuery = HFactory.createIndexedSlicesQuery(keyspace, ss, ss, ss); 
    indexedSlicesQuery.setColumnNames("name");   
    indexedSlicesQuery.addLtExpression("timestamp", ByteBufferUtil.string(date_s.toByteBuffer(date))); 
    indexedSlicesQuery.addEqualsExpression("searchall", ByteBufferUtil.string(bs.toByteBuffer(true))); 
    indexedSlicesQuery.setColumnFamily(column_family); 
    indexedSlicesQuery.setStartKey(""); 
    System.out.println(indexedSlicesQuery.toString()); 
    QueryResult<OrderedRows<String, String, String>> res = indexedSlicesQuery.execute(); 


    List<Row<String, String, String>> list = res.get().getList(); 
    for (Row<?, ?, ?> row : list) 
    { 
     System.out.println(row.getKey());    
    } 

}