2011-03-18 4 views
6

Je dois être en mesure d'effectuer une recherche sur les index secondaires en utilisant seulement <,>, < =, ou> =. Je comprends que Cassandra exige au moins une clause d'index d'égalité, car elle itère sur tous les résultats de cet indice d'égalité.Comment faire une recherche index secondaire à Cassandra sans égalité?

Existe-t-il des astuces pour effectuer des opérations en utilisant seulement <,>, < =, ou> = (au moins conceptuellement)? Est-ce une mauvaise idée? Est-ce que quelqu'un sait s'il y a des plans pour changer ça à Cassandra?

Merci!

Répondre

6

S'il y avait un bon moyen de faire cela avec des index 0.7, nous l'aurions mentionné dans http://www.datastax.com/dev/blog/whats-new-cassandra-07-secondary-indexes au lieu de dire "vous avez besoin d'une expression d'égalité". Il n'y a pas de code de triche double secret. Une alternative consiste à utiliser ByteOrderedPartitioner (ce qui vous permet de faire> = requêtes sur la clé de ligne). Un autre peut être de créer une vue matérialisée sur un sous-ensemble de vos données au moment de l'écriture. C'est en supposant que vous avez assez de lignes que faire simplement un balayage séquentiel non ordonné est trop lent.

Les index bitmap de 0,8 (https://issues.apache.org/jira/browse/CASSANDRA-1472) prendront en charge les opérations d'inégalité sur les index.

+0

voir aussi https://issues.apache.org/jira/browse/CASSANDRA-1339. Notez également qu'au moment de la rédaction de ce document, 0,8 a été publié et que la fonctionnalité n'est pas encore présente. Le dernier commentaire sur 1472 date de ~ 3 mois et le dernier patch posté il y a ~ 9 mois. (Je ne suis pas un développeur de Cassandra et jbellis est, je suis juste un utilisateur potentiel essayant d'estimer quand cette fonctionnalité sera disponible) – bshanks

Questions connexes