una tablas tabla son sirve significa que para llaves las hacer funcion cuales crear como clave caracteristicas cassandra cql cqlsh thrift-protocol nosql

tablas - cassandra:: ¿puedo crear una tabla sin una clave principal?



que es una clave principal y para que sirve (3)

Cassandra no es una base de datos relacional. Usar índices de la manera en que se pretende usar índices no funciona bien en Cassandra. La razón principal por la que esto es cierto es que Cassandra está diseñada para un caso de uso en el que tiene docenas, cientos o miles de servidores en un clúster: usa la primera parte de la clave primaria (la clave de partición) para determinar qué servidores son datos. Los índices secundarios de Cassandra (que mencionas que quieres usar) son locales del nodo: para usarlos, Cassandra tendría que preguntar a cada servidor del clúster por la consulta, multiplicando el impacto de la consulta por cada nodo del clúster.

Por lo tanto, en lugar de crear una tabla con índices en subscriberid, productid, operatorid y subscriptiontype, creará 4 tablas, una por índice, donde la clave de partición es subscriberid, productid, operatorid o subscriptiontype. Cuando realiza la consulta, cassandra sabrá exactamente qué servidor posee los datos, y guardará el resto del clúster.

Sí, esto duplica muchos datos; esto se denomina desnormalización y es común en Cassandra.

En versiones futuras (3.4 y posteriores), podrá usar "SASI", una nueva forma de índices de Cassandra que puede ayudar significativamente a su caso de uso, con mucha menos desnormalización requerida.

Ahora estoy aprendiendo a Cassandra , así que tengo una mesa sin llave primaria . Pero tiene algunos índices.

Así que esta es mi duda, ¿puedo crear una tabla sin clave principal ?.

CREATE TABLE subscription (subscriberid varchar,productid varchar,panaccessproductid varchar,operatorproductid varchar,price float,fallback varchar,paymenttype varchar,operatorid varchar,subscriptiontype varchar,expiry timestamp,subscriptionstatus varchar,created timestamp);

No hay clave primaria y subscriberid, productid, operatorid y subscriptiontype son índices. es posible?

De la documentación

Clave principal :: Una clave principal identifica la ubicación y el orden del almacenamiento de datos. La clave primaria se define en el momento de creación de la tabla y no se puede modificar. Si se debe cambiar la clave principal, se crea un nuevo esquema de tabla y los datos se escriben en la nueva tabla. Cassandra es un almacén de filas de partición, y un componente de la clave principal, la clave de partición, identifica qué nodo contendrá una fila de tabla particular. Como mínimo, la clave principal debe consistir en una clave de partición. Las claves de partición compuestas pueden dividir un conjunto de datos para que los datos relacionados se almacenen en particiones separadas. Las claves primarias compuestas incluyen columnas de clustering que ordenan los datos en una partición. La definición de la clave primaria de una tabla es crítica en Cassandra. Modele con cuidado cómo se insertarán y recuperarán los datos en una tabla antes de elegir qué columnas definirán la clave principal. El tamaño de las particiones, el orden de los datos dentro de las particiones, la distribución de las particiones entre los nodos del clúster: todas estas consideraciones determinan la selección de la mejor clave primaria para una tabla.


La respuesta simple es no, la clave primaria es obligatoria


No puede crear una tabla en Cassandra sin una clave principal, pero aun así, si desea guardar sus datos, puede agregar una columna adicional a su tabla (digamos "pk") con el tipo de datos UUID.

Ejemplo:

Suscripción CREATE TABLE (pk uuid PRIMARY KEY, subscriberid varchar, productid varchar, panaccessproductid varchar, operatorproductid varchar, price float, fallchar varchar, paymenttype varchar, operatorid varchar, subscriptiontype varchar, expiry timestamp, subscriptionstatus varchar, create timestamp);

y puede insertar datos como:

INSERT INTO subscription (pk, subscriberid, ...) VALUES (uuid (), ''S123'', ...);