2016-01-04 2 views
1

Je cherche des entrées autour de la modélisation des données de cassandra pour une caractéristique de type chronologie. Pour stocker des données pour la chronologie, je prévois d'utiliser timeuuid dans Cassandra et le faire comme une clé de clustering. Cela aidera à trier les données. Mais les mêmes données peuvent être mises à jour et j'ai besoin de stocker le timeuuid mis à jour correspondant aux données afin qu'il puisse être poussé vers le haut dans le calendrier. Cela implique d'extraire la ligne data-timeuuid précédente, de la supprimer et d'insérer la nouvelle. Mais ne semble pas performant. Comment puis-je gérer le tri et la mise à jour sur la même colonne (dans mon cas timeuuid) pour implémenter la fonction de chronologie.Cassandra mise à jour et trier sur la même colonne

Répondre

0

Je propose ce schéma pour vous:

CREATE TABLE timeline_idx { 
    timeline_key text, 
    time timeuuid, 
    content_key text, 
    PRIMARY KEY ((partition_key), time) 
} 

CREATE TABLE timeline_content { 
    content_key text, 
    content blob, 
    PRIMARY KEY (content_key) 
} 

Timeline_idx est utilisé pour vous donner les clés de contenu commandés en tant que ligne de temps. Ensuite, vous pouvez récupérer le contenu dans une seconde table appelée timeline_content. Il n'est pas commandé et il n'y a pas de clé de clustering. Vous pouvez mettre à jour votre contenu sans connaître son timeuuid. Je choisis le type de texte pour timeline_key et content_key mais vous pouvez choisir ce que vous voulez tant qu'il identifie les timelines et le contenu de façon unique.

+0

Toujours le même problème car il souhaite que l'horodatage soit mis à jour ainsi que le contenu d'un message. Aurait besoin de supprimer de timeline_idx et faire un nouvel insert. Je ne sais pas quel est le meilleur modèle ici. –

+0

Ou faites juste un nouvel insert. Le client peut filtrer sur une clé de contenu distincte à partir de timeline_idx. – DineMartine