2015-08-15 1 views
0

Tout d'abord, je vous demande de bien vouloir me supporter et je m'excuse si c'est une question idiote.Implémentation d'une pile comme une table avec Cassandra (CQL 3)

J'ai une table comme celle-ci.

create table users (
cname text, 
--anything else like counter or timestamp 
primary key (cname) 
); 

Tout ce que j'ai besoin de faire est d'implémenter une structure de type pile avec cette table.

Un certain nombre d'opérations d'insertion et de suppression seront présentes.

Problèmes rencontrés:

1) J'essayé d'utiliser des horodateurs. J'ai inséré avec succès en utilisant dateof(now()) mais Je voulais juste supprimer le dernier enregistrement (???). En outre, en faisant cname,t (où t est de type timestamp) en tant que clé primaire, j'ai des noms de domaine redondants que je ne veux pas.

2) J'ai essayé d'utiliser counter mais j'ai trouvé que c'était compliqué. En outre, je peux avoir plusieurs threads ou clients effectuant les opérations d'insertion/suppression. Donc, j'ai pensé le laisser.

3) De plus, je ne connaîtrai pas la valeur de cname. Ainsi, les requêtes nécessitant une clé dans la clause where sont impossibles. Donc, je pense que je dois changer la clé primaire à une autre variable.

S'il vous plaît, aidez-moi à aller de l'avant. Je trouve cela un peu difficile car il n'y a pas de bons livres disponibles pour apprendre de cql.

Répondre

0

Les piles et les files d'attente sont des anti-modèles de cassandra (http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets) - vous pouvez les implémenter, mais vous devez bien comprendre les internes avant de pouvoir le faire sans commettre d'horrible erreur. Il est assez clair que vous n'êtes probablement pas encore à ce niveau.

Y a-t-il une raison pour laquelle vous pensez que vous devez utiliser cassandra pour une pile?

Oui, la première partie de votre clé primaire (appelée clé de partition) doit être quelque chose que vous connaissez, donc si vous ne connaissez pas cname, ce n'est probablement pas un bon choix pour votre clé primaire. Que savez-vous sur les modèles de données/d'utilisation? Peut-être des seaux de temps?