2017-09-05 6 views
0

Dans Cassandra, laisse dire que j'ai une table appelée catsComprendre et définir clés primay dans Cassandra

Dans les chats de table, permet de dire qu'un chat ne peut être identifié de manière unique basée sur les deux la couleur du chat et de la nom du chat, par exemple;

color: blue, name: henry 

Il pourrait cependant y avoir beaucoup de chats qui sont de couleur bleue. De même, il pourrait y avoir beaucoup de chats nommés Henry. Cependant, il n'y a qu'un seul chat nommé Henry dont la couleur est bleue.

Ma question est, que dois-je définir comme la clé primaire et comment. Par exemple, dois-je faire le nom de la clé de partition, ou devrais-je faire la couleur de la clé de partition, ou devrais-je faire ces deux champs dans le cadre de la clé de partition? Serait-il utile d'ajouter la couleur et/ou le nom en tant que clé de clustering? J'ai également lu sur les valeurs hachées comme la clé de partition; aurait une valeur hachée séparée comme clé de partition et l'ajout du nom et de la couleur comme index secondaires offrent un avantage ici?

Quels sont les impacts sur les performances ici? Quel type de configuration de table serait le plus performant?

Les utilisateurs effectueront une recherche par nom et par couleur ou simplement par couleur, mais jamais sur le nom.

Merci d'avance.

Répondre

1

Pour extraire des données de la table, les valeurs de toutes les colonnes définies dans la clé de partition doivent être fournies. Etant donné que dans votre cas, l'utilisateur peut interroger que par la couleur et aussi à la fois la couleur et le nom que vous aurait besoin la définition suivante

clé primaire (couleur, nom);

Avec cela, vous pouvez interroger la couleur seulement comme il est une clé de partition et d'interroger aussi avec les deux clés