L'interrogation de Cassandra partielle clé de partition
Cassandra, je peux créer une image composite clé de partition, séparées de ma clé de cluster:
CREATE TABLE footable (
column1 text,
column2 text,
column3 text,
column4 text,
PRIMARY KEY ((column1, column2))
)
Comme je le comprends, quering par clé de partition est extrêmement efficace (le plus efficace?) méthode de récupération de données. Ce que je ne sais pas, cependant, est de savoir si c'est aussi efficace pour la requête par une partie seulement d'un composite clé de partition.
En MSSQL, ce serait efficace, aussi longtemps que les composants sont inclus en commençant par la première (colonne1 au lieu de colonne2, dans cet exemple). Est-ce aussi le cas dans Cassandra? Il est très efficace pour la requête de lignes basée uniquement sur la colonne1, ici?
Si vous souhaitez interroger sur seulement une partie de la clé primaire, vous pouvez la définir comme CLÉ PRIMAIRE (colonne1, colonne2). Toutefois, cela signifie que les partitions (où les données sont stockées) sont déterminées par colonne1. Cela peut entraîner chaud nœuds, ou d'autres questions en fonction de la cardinalité de la colonne1. Si vous fournir plus de détails sur votre schéma (en particulier ce qui colonne1 et colonne2 représenter) nous pouvons être en mesure de vous suggérer un moyen efficace de terre pour vous.
Je suis à la recherche de plus d'une stratégie générale ici, pas une recommandation particulière. Mon réel problème, cependant, n'est pas que je finirais avec les hotspots, c'est que je suis susceptible de dépasser le ~2 milliards de colonne de limiter à un certain point, parce que je suis aussi à l'aide d'une clé de cluster (timestamp).
aussi, pour être tout à fait clair, je posais des questions sur l'interrogation sur une partie de la partition, ne fait pas partie de la primaire. Il est possible, dans un sens, à l'aide de la clause sur la dernière partie de la clé de partition. Cela est suffisant pour mon cas d'utilisation.
Je suis à la recherche de plus d'une stratégie générale ici, pas une recommandation particulière. Mon réel problème, cependant, n'est pas que je finirais avec les hotspots, c'est que je suis susceptible de dépasser le ~2 milliards de colonne de limiter à un certain point, parce que je suis aussi à l'aide d'une clé de cluster (timestamp).
aussi, pour être tout à fait clair, je posais des questions sur l'interrogation sur une partie de la partition, ne fait pas partie de la primaire. Il est possible, dans un sens, à l'aide de la clause sur la dernière partie de la clé de partition. Cela est suffisant pour mon cas d'utilisation.
OriginalL'auteur Mark | 2014-12-03
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas le cas dans Cassandra, car il n'est pas possible. Cela permettra de rendement de l'erreur suivante:
Découvrez cette Cassandra 2014 SF Sommet de la présentation de DataStax MVP Robbie Strickland intitulé "CQL Sous le Capot." Diapositives 62-64 montrent que la partition complète clé est utilisé comme rowkey. Avec composite partitionnement des touches de Cassandra, vous devez requête par tous les rowkey ou rien de tout cela.
Vous pouvez regarder le présentation complète de la vidéo ici.
OriginalL'auteur Aaron
Ce qui est impossible dans Cassandra, car il aurait besoin d'un full table scan pour résoudre une telle requête. L'emplacement de la partition est définie par une table de hachage de tous les membres de la clé composée, cela signifie donner seulement la moitié de la clé est aussi bon que de donner rien de tout cela. La seule façon de trouver le dossier est à rechercher à travers toutes les clés et de vérifier si elles correspondent.
OriginalL'auteur RussS