Cassandra a une limite de 2 milliards de cellules par partition, mais qu'est ce qu'une partition?

dans Cassandra Wiki, il est dit qu'il y a une limite de 2 billion cells (rows x columns) par partition. Mais il est clair pour moi ce qu'est une partition?

avons-nous une partition par noeud par famille de colonnes, ce qui signifierait que la taille maximale d'une famille de colonnes serait 2 billion cells * number of nodes dans le cluster.

Ou va Cassandra créer autant de partitions que nécessaire pour stocker toutes les données d'une colonne de la famille?

je commence un nouveau projet donc je vais utiliser Cassandra 2.0.

31
demandé sur Benoit Thiery 2013-12-11 11:08:25

2 réponses

avec L'avènement du CQL3, la terminologie a légèrement changé.

En Gros

Create Table foo (a int , b int, c int, d int, PRIMARY KEY ((a,b),c))

fera une table CQL3. L'information en a et b est utilisée pour faire la clé de partition, ce qui décrit sur quel noeud l'information résidera. C'est le "partiton" dont il est question dans la limite de 2 milliards de cellules.

à l'intérieur de cette partition, l'information sera organisée par c, connu sous le nom de clustering key. Ensemble a, b et c, définissent un valeur unique de D. Dans ce cas, le nombre de cellules dans une partition serait c * D. Ainsi, dans cet exemple, pour une paire donnée de a et b, il ne peut y avoir que 2 milliards de combinaisons de c et d

alors que vous modélisez vos données, vous voulez vous assurer que la clé primaire varie de sorte que vos données seront distribuées au hasard sur Cassandra. Ensuite, utilisez les touches clustering pour vous assurer que vos données sont disponibles comme vous le souhaitez.

voir cette vidéo pour plus d'informations sur la modélisation des données dans Cassandre le Datamodel est mort, vive le datamodel

Edit: Un exemple de plus de la commentaires

Create Table foo (a int , b int, c int, d int, e int, f int, PRIMARY KEY ((a,b),c,d))

les Partitions seront identifiés de manière unique par une combinaison de a et b.

à l'intérieur d'une partition c et d seront utilisés pour ordonner les cellules à l'intérieur de la partition de sorte que la disposition sera ressemble un peu:

(a1,b1) --> [c1,d1 : e1], [c1,d1  :f1], [c1,d2 : e2] ....  

donc dans cet exemple vous pouvez avoir 2 milliards de cellules avec chaque cellule contenant:

  • Une valeur de c
  • Une valeur de d
  • Une valeur de e ou f

ainsi la limite de 2 milliards se réfère à la somme des tuples uniques de (c,d,e) et (c,d,f).

57
répondu RussS 2015-10-16 20:21:56

à Partir de: http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/create_table_r.html


utilisation d'une clé de partition composite#

une clé de partition composite est une clé de partition constituée de plusieurs colonnes. Vous utilisez un ensemble supplémentaire de parenthèses pour entourer les colonnes qui composent la clé de partition composite. Les colonnes à l'intérieur de la définition de la clé primaire mais en dehors des parenthèses imbriquées sont des colonnes de regroupement. Ces colonnes de forme ensembles logiques à l'intérieur d'une partition pour faciliter la récupération. 


CREATE TABLE Cats (
  block_id uuid,
  breed text,
  color text,
  short_hair boolean,
  PRIMARY KEY ((block_id, breed), color, short_hair)
);

par exemple, la clé de partition composite se compose de block_id et breed. Les colonnes de regroupement, color et short_hair, déterminent l'ordre de regroupement des données. En général, Cassandra stockera des colonnes ayant le même block_id mais une race différente sur des noeuds différents, et des colonnes ayant le même block_id et se reproduisant sur le même noeud.


Implication

= = > Partition est la plus petite unité de réplication (qui à elle seule n'a aucun sens. :))

= = > chaque combinaison de block_id et breed est Partition.

= = > sur une machine donnée dans un cluster, soit tous ou aucune des lignes avec la même partition-clé existe.

3
répondu Ajeet Ganga 2014-09-17 01:34:05