web-dev-qa-db-fra.com

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 je ne sais pas ce qu'est une partition?

Avons-nous une partition par nœud par famille de colonnes, ce qui signifie que la taille maximale d'une famille de colonnes serait 2 billion cells * number of nodes dans le cluster.

Ou est-ce que Cassandra créera autant de partitions que nécessaire pour stocker toutes les données d'une famille de colonnes?

Je commence un nouveau projet donc j'utiliserai Cassandra 2.0.

33
Benoit Thiery

Avec l'avènement de CQL3, la terminologie a légèrement changé par rapport aux anciens termes d'épargne.

Fondamentalement

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

Fera une table CQL3. Les informations en a et b sont utilisées pour créer la clé de partition, cela décrit sur quel nœud les informations résideront. C'est le "partiton" dont parle la limite de 2 milliards de cellules.

Dans cette partition, les informations seront organisées par c, appelé clé de clustering. Ensemble a, b et c, définissent une valeur unique de d. Dans ce cas, le nombre de cellules dans une partition serait c * d. Donc, 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

Ainsi, lorsque vous modélisez vos données, vous voulez vous assurer que la clé primaire variera afin que vos données soient distribuées de manière aléatoire sur Cassandra. Utilisez ensuite des clés de clustering pour vous assurer que vos données sont disponibles comme vous le souhaitez.

Regardez cette vidéo pour plus d'informations sur le Datmodeling en cassandra Le Datamodel est mort, vive le datamodel

Edit: Un autre exemple des 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ées de manière unique par une combinaison de a et b.

Au sein d'une partition, c et d seront utilisés pour ordonner les cellules de la partition, de sorte que la disposition ressemblera 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

La limite de 2 milliards fait donc référence à la somme de tuples uniques de (c,d,e) et (c,d,f).

61
RussS

De: http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/create_table_r.html


Utiliser une clé de partition composite¶

Une clé de partition composite est une clé de partition composée de plusieurs colonnes. Vous utilisez un jeu de parenthèses supplémentaire pour entourer les colonnes qui composent la clé de partition composite. Les colonnes dans la définition de clé primaire mais en dehors des parenthèses imbriquées sont des colonnes de clustering. Ces colonnes forment des 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 de race. Les colonnes de regroupement, color et short_hair, déterminent l'ordre de regroupement des données. Généralement, Cassandra stockera les colonnes ayant le même block_id mais une race différente sur différents nœuds, et les colonnes ayant le même block_id et se reproduisant sur le même nœud.


Implication

==> La partition est la plus petite unité de réplication (ce qui en soi n'a aucun sens pour sh **. :))

==> Chaque combinaison de block_id et de race est une partition .

==> Sur une machine donnée du cluster, toutes ou aucune des lignes avec la même clé de partition n'existera.

3
Ajeet Ganga