El último y nos vamos.
DevCenter es un entorno Eclipse adaptado para trabajar con Cassandra, como un manejador de base de datos. Permite guardar conexiones, ejecutar sentencias CQL y guardarlas como scripts.
Se puede bajar esta aplicación desde [aqui]. Lo instalas en una de tus máquinas virtuales.
Para crear una conexión en DevCenter se da clic en el icono ubicado en la parte superior izquierda como se visualiza en la siguiente imagen.
Se edita el nombre de la conexión y el IP del host, en este caso es la IP de una de las máquinas virtuales que creaste y que tienen corriendo el proceso de Cassandra.
Inserción de datos
Herramienta CQL para agregar datos
La herramienta que incluye el paquete de instalación puede usarse por línea de comandos haciendo consultas en el lenguaje de consultas de Cassandra (CQL).
Keyspace y familias de columnas
Se necesita crear un keyspace para poder empezar a llenar datos. El comando para crear un keyspace es el siguiente:
CREATE KEYSPACE if not exists SaleStore WITH REPLICATION =
{ 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
{ 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
Un keyspace es un namespace que define la estrategia de replicación. Nombres válidos para keyspaces son aquellos compuestos exclusivamente de caracteres alfanuméricos y que su longitud sea menor o igual a 32. Los keyspaces no distinguen entre mayúsculas y minúsculas: utilice un nombre entrecomillado si desea que distinga entre estos tipos de letra.
Las propiedades soportadas para la sentencia CREATE KEYSPACE son:
Nombre
|
Tipo
|
Obligatorio
|
Valor por defecto
|
Descripción
|
replication
|
map
|
Si
|
La estrategia de replicación y las opciones para user el keyspace.
| |
durable_writes
|
simple
|
No
|
true
|
Opción si desea usar los logs para registrar las actualizaciones en el keyspace (deshabilite a su propio riesgo).
|
La propiedad de replication es obligatoria. Debe al menos contener una opción de que define la estrategia de replicación a usar. El resto de las opciones depende del tipo de la estrategia a seguir. Por defecto, Cassandra soporta las siguientes clases:
- ‘SimpleStrategy’: una estrategia simple que define un factor de replicación simple para todo el cluster. La única opción soportada es ‘replication_factor’ que define el factor de replicación y es obligatoria.
- 'NetworkTopologyStrategy': Una estrategia de replicación que permite dar un factor de replicación independiente para cada datacenter. El resto de las opciones son parejas de llave-valor donde cada llave es el nombre de un datacenter y el calor es el factor de replicación para dicho datacenter.
- 'OldNetworkTopologyStrategy': Una estrategia de replicación obsoleta. No debería usarse y en su lugar usar 'NetworkTopologyStrategy'.
Intentar recrear un keyspace que ya existe dará error, a menos que se utilice la opción IF NOT EXISTS. Si se utiliza, la sentencia no se ejecutará si el keyspace ya existe.
Incrementar el factor de replicación incrementa el total de copias del keyspace guardadas en un cluster. Es muy importante incrementar el factor de replicación, porque si se utiliza el valor de defecto de 1 y el nodo con la única copia falla, no será posible conectarse al data center porque el keyspace no fue replicado.
Una vez que el keyspace es creado, se pueden crear tablas, insertar datos, consultar información, etc. Las familias de columnas son como lo serían las tablas en una base de datos relacional.
Creación de keyspace y familias de columnas usando DataStax Development Center
Para este proyecto se uso DevCenter para crear el Keyspace y la tabla como se aprecia en la siguiente imagen.
También se puede verificar que los datos se hayan creado dentro de OpsCenter.
Insertar datos
Para importar datos a Cassandra de un archivo separado por comas (CSV) se usa el comando COPY. En DevCenter no es posible utilizar el comando COPY por lo que es necesario utilizar la herramienta por defecto CQL por línea de comandos.
La sintaxis de una consulta con el comando COPY es:
COPY table_name ( column, ...)
FROM ( 'file_name' | STDIN )
WITH option = 'value' AND ...
FROM ( 'file_name' | STDIN )
WITH option = 'value' AND ...
Por defecto, cuando se usa el comando COPY FROM, Cassandra espera que cada renglón en el archivo CSV tenga el mismo número de columnas que la tabla donde los datos serán importados. Cassandra asigna los campos en el orden que están en la tabla. Para aplicar los datos a ciertas columnas o en cierto orden, se pueden especificar el nombre de las columnas entre paréntesis después del nombre de la columna.
También es necesario que digas en la query de donde obtendremos los datos. En este caso, nuestro archivo estaba en C:\sales2.csv.
[Esto nos causó tantos problemas por lo que relatamos arriba. Todos deben tener las mismas columnas y si no es así, lanza un error, alcanza a insertar todas las lineas hasta antes de la dio el error. El archivo lo encontramos en Internet y pudiera ser que no estaba bien formado]
A continuación un ejemplo del comando ejecutado desde la consola de CQLSH.
Realizar consulta a datos
Para aplicar consultas a los datos o realizar queries puede utilizarse tanto CQLSH como DevCenter.
En la siguiente imagen se puede apreciar una consulta de los datos importados en la tabla “sales” utilizando la herramienta DevCenter.
Y pum! Ya puedes conquistar el mundo!
Si me preguntan ahora si recuerdo todo esto, solo diré que una laguna borrosa se apodera de mi mente. Tal vez fue tan traumático que lo olvide. O es conocimiento que no volví a aplicar en mucho tiempo y lo olvide a cambio de cosas mas importantes, como alguna estadística tonta o la escena mas épica de Sharknado.
Espero que esto sea de ayuda :).
Referencias útiles
Datastax, Inc., CQL for Cassandra 2.x Documentation: http://www.datastax.com/documentation/cql/3.1/pdf/cql31.pdf
Apache-Cassandra, Cassandra Query Language (CQL) v3.1.7: https://cassandra.apache.org/doc/cql3/CQL.html#createKeyspaceStmt