database - tutorial - cursos cassandra
Cómo definir familias dinámicas de columnas en cassandra (2)
CQL3 requiere que los metadatos de columna existan. CQL3 es en realidad una abstracción sobre las filas de almacenamiento subyacentes, por lo que no es uno a uno. Si desea utilizar nombres dinámicos de columnas (y hay muchos casos de uso excelentes para ellos), use la interfaz Thrift tradicional (a través de la biblioteca cliente que elija). Esto le dará un control total sobre lo que se almacena.
Aquí se dice que no se necesita ningún esfuerzo especial para obtener una familia dinámica de columnas. Pero siempre obtengo una excepción cuando intento establecer un valor para una columna indefinida.
Creé una familia de columnas como esta:
CREATE TABLE places (
latitude double,
longitude double,
name text,
tags text,
PRIMARY KEY (latitude, longitude, name)
)
Por cierto: tenía que definir la columna de etiquetas. ¿Alguien puede explicarme por qué? Tal vez porque todas las otras columnas son parte del índice?
Ahora al insertar datos como este:
INSERT INTO places ("latitude","longitude","name","tags") VALUES (49.797888,9.934771,''Test'',''foo,bar'')
funciona bien! Pero cuando intento:
INSERT INTO places ("latitude","longitude","name","tags","website") VALUES (49.797888,9.934771,''Test'',''foo,bar'',''test.de'')
Me aparece el siguiente error:
Bad Request: Unknown identifier website
text could not be lexed at line 1, char 21
¿Qué cambios son necesarios para poder agregar columnas dinámicamente?
Estoy usando Cassandra 1.1.9 con CQL3 con el cqlsh directamente en un servidor.
CQL3 es compatible con la familia dinámica de columnas, pero primero debe modificar el esquema de la tabla
ALTER TABLE places ADD website varchar;
Consulte la documentación 1.2 y CQL en diapositivas en profundidad