2011-04-11 7 views
0

HI J'ai juste commencé à investiguer Cassandra et j'ai un peu de confusion. Pourriez-vous suggérer schéma pour ce qui suit:Besoin d'un schéma de Cassandra

Schéma: email, city, items1[], items2[]

Entrée: cityId, item1, item2

J'ai besoin:

select email 

where city=cityId 

and item1 is NOT in items1[] 

and item2 is NOT in items2[] 

Est-il possible?

Répondre

2

Vous devrez peut-être donner un peu plus de détails pour obtenir une réponse complète à celui-ci. Dans Cassandra à partir de la version 0.7, vous pouvez utiliser un index secondaire pour sélectionner des lignes en fonction de la valeur de colonne (c'est-à-dire sélectionner des lignes où city = cityId). Vous devrez l'activer dans votre schéma Cassandra en définissant "index_type: KEYS" dans les métadonnées de la colonne. Pour plus de détails, voir http://www.datastax.com/dev/blog/whats-new-cassandra-07-secondary-indexes.

Cassandra ne fournit pas de négation, donc vos conditions "NOT in items1 []" peuvent nécessiter d'être testées par le client, et non par les nœuds Cassandra. Combien y a-t-il de valeurs possibles pour vos items1 et items2 (juste une poignée, ou des milliers?).

Vous aurez probablement besoin de configurer une famille de colonnes uniquement pour répondre à ce type spécifique de requête, c'est-à-dire une table de correspondance avec une sorte de clé composée basée sur item1 et item2. Cependant, cela peut être difficile de maintenir le côté serveur s'il y a beaucoup de valeurs potentielles de item1 et item2, et cher de récupérer le côté client!

Questions connexes