cassandra - tener - tipos de particiones en linux
Cassandra tiene un límite de 2 mil millones de celdas por partición, pero ¿qué es una partición? (2)
En Cassandra Wiki, se dice que hay un límite de 2 billion cells (rows x columns)
por partición. Pero no me queda claro qué es una partición?
¿Tenemos una partición por nodo por familia de columnas, lo que significaría que el tamaño máximo de una familia de columnas sería de 2 billion cells * number of nodes
en el clúster?
¿O Cassandra creará tantas particiones como sea necesario para almacenar todos los datos de una familia de columnas?
Estoy empezando un nuevo proyecto, así que usaré Cassandra 2.0.
Con la llegada de CQL3, la terminología ha cambiado ligeramente con respecto a los antiguos términos de ahorro.
Básicamente
Create Table foo (a int , b int, c int, d int, PRIMARY KEY ((a,b),c))
Hará una tabla CQL3. La información en a y b se usa para hacer la clave de partición, esto describe en qué nodo residirá la información. Este es el ''partiton'' del que se habla en el límite de 2 mil millones de células.
Dentro de esa partición, la información se organizará por c, conocida como la clave de agrupación. Juntos a, byc, definen un valor único de d. En este caso, el número de celdas en una partición sería c * d. Entonces, en este ejemplo para cualquier par de ayb, solo puede haber 2 billones de combinaciones de c y d
Así que a medida que modelas tus datos, quieres asegurarte de que la clave principal variará para que tus datos se distribuyan aleatoriamente sobre Cassandra. Luego, use las claves de agrupación en clústeres para asegurarse de que sus datos estén disponibles de la forma que desea.
Mire este video para obtener más información sobre el modelado de datos en cassandra. El modelo de datos está muerto. Viva el modelo de datos.
Edición: un ejemplo más de los comentarios.
Create Table foo (a int , b int, c int, d int, e int, f int, PRIMARY KEY ((a,b),c,d))
Las particiones se identificarán de forma única mediante una combinación de a y b.
Dentro de una partición, cyd se usará para ordenar celdas dentro de la partición, por lo que el diseño se verá un poco como:
(a1,b1) --> [c1,d1 : e1], [c1,d1 :f1], [c1,d2 : e2] ....
Entonces, en este ejemplo, puedes tener 2 mil millones de celdas con cada celda que contiene:
- Un valor de c
- Un valor de d
- Un valor de e o f
Por lo tanto, el límite de 2 mil millones se refiere a la suma de tuplas únicas de (c,d,e)
y (c,d,f)
.
De: http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/create_table_r.html
Usando una clave de partición compuesta¶
Una clave de partición compuesta es una clave de partición que consta de varias columnas. Utiliza un conjunto adicional de paréntesis para encerrar las columnas que conforman la clave de partición compuesta. Las columnas dentro de la definición de clave principal pero fuera de los paréntesis anidados son columnas agrupadas. Estas columnas forman conjuntos lógicos dentro de una partición para facilitar la recuperación.
CREATE TABLE Cats (
block_id uuid,
breed text,
color text,
short_hair boolean,
PRIMARY KEY ((block_id, breed), color, short_hair)
);
Por ejemplo, la clave de partición compuesta consiste en block_id y raza. Las columnas de agrupación, color y short_hair, determinan el orden de agrupación de los datos. En general, Cassandra almacenará las columnas que tengan el mismo block_id pero una raza diferente en nodos diferentes, y las columnas que tengan el mismo block_id y la raza en el mismo nodo.
Implicación
==> La partición es la unidad de replicación más pequeña (que por sí sola no tiene sentido **).
==> Cada combinación de block_id y raza es una partición.
==> En cualquier máquina dada en el clúster, existirán todas o ninguna de las filas con la misma clave de partición.