Hay mucha confusión en torno a esto, intentaré hacerlo lo más simple posible.
La clave primaria es un concepto general para indicar una o más columnas utilizadas para recuperar datos de una tabla.
La clave principal puede ser SIMPLE e incluso declarada en línea:
create table stackoverflow_simple (
key text PRIMARY KEY,
data text
);
Eso significa que está hecho por una sola columna.
Pero la clave primaria también puede ser COMPUESTO (también conocido como COMPUESTO ), generado a partir de varias columnas.
create table stackoverflow_composite (
key_part_one text,
key_part_two int,
data text,
PRIMARY KEY(key_part_one, key_part_two)
);
En una situación de COMPOSITE clave principal, la "primera parte" de la tecla que se denomina clave de partición (en este ejemplo key_part_one es la clave de partición) y la segunda parte de la clave es la clave de agrupación (en este ejemplo key_part_two )
Tenga en cuenta que tanto la clave de partición como la agrupación en clúster se pueden hacer con más columnas , así es como:
create table stackoverflow_multiple (
k_part_one text,
k_part_two int,
k_clust_one text,
k_clust_two int,
k_clust_three uuid,
data text,
PRIMARY KEY((k_part_one, k_part_two), k_clust_one, k_clust_two, k_clust_three)
);
Detrás de estos nombres ...
- La clave de partición es responsable de la distribución de datos entre sus nodos.
- La clave de agrupación es responsable de la clasificación de datos dentro de la partición.
- La clave primaria es equivalente a la clave de partición en una tabla de clave de campo único (es decir, simple ).
- La clave compuesta / compuesta es cualquier clave de varias columnas
Información de uso adicional: DOCUMENTACIÓN DE DATASTAX
Uso pequeño y ejemplos de contenido CLAVE
SIMPLE :
insert into stackoverflow_simple (key, data) VALUES ('han', 'solo');
select * from stackoverflow_simple where key='han';
contenido de la tabla
key | data
----+------
han | solo
COMPOSITE / COMPOUND KEY puede recuperar "filas anchas" (es decir, puede consultar solo con la clave de partición, incluso si tiene claves de agrupación definidas)
insert into stackoverflow_composite (key_part_one, key_part_two, data) VALUES ('ronaldo', 9, 'football player');
insert into stackoverflow_composite (key_part_one, key_part_two, data) VALUES ('ronaldo', 10, 'ex-football player');
select * from stackoverflow_composite where key_part_one = 'ronaldo';
contenido de la tabla
key_part_one | key_part_two | data
--------------+--------------+--------------------
ronaldo | 9 | football player
ronaldo | 10 | ex-football player
Pero puede consultar con todas las claves (partición y agrupación) ...
select * from stackoverflow_composite
where key_part_one = 'ronaldo' and key_part_two = 10;
salida de consulta
key_part_one | key_part_two | data
--------------+--------------+--------------------
ronaldo | 10 | ex-football player
Nota importante: la clave de partición es el especificador mínimo necesario para realizar una consulta usando a where clause
. Si tiene una clave de partición compuesta, como la siguiente
p.ej: PRIMARY KEY((col1, col2), col10, col4))
Puede realizar consultas solo pasando al menos col1 y col2, estas son las 2 columnas que definen la clave de partición. La regla "general" para realizar una consulta es que debe pasar al menos todas las columnas de claves de partición, luego puede agregar opcionalmente cada clave de agrupación en el orden en que se establecen.
entonces las consultas válidas son ( excluyendo índices secundarios )
- col1 y col2
- col1 y col2 y col10
- col1 y col2 y col10 y col 4
Inválido:
- col1 y col2 y col4
- cualquier cosa que no contenga tanto col1 como col2
Espero que esto ayude.