Cassandra - Guía rápida

Apache Cassandra es una base de datos distribuida altamente escalable y de alto rendimiento diseñada para manejar grandes cantidades de datos en muchos servidores básicos, proporcionando alta disponibilidad sin un solo punto de falla. Es un tipo de base de datos NoSQL. Primero entendamos qué hace una base de datos NoSQL.

NoSQLDatabase

Una base de datos NoSQL (a veces denominada No solo SQL) es una base de datos que proporciona un mecanismo para almacenar y recuperar datos distintos de las relaciones tabulares utilizadas en las bases de datos relacionales. Estas bases de datos no tienen esquemas, admiten una replicación sencilla, tienen una API simple, eventualmente son consistentes y pueden manejar grandes cantidades de datos.

El objetivo principal de una base de datos NoSQL es tener

  • simplicidad de diseño,
  • escala horizontal, y
  • control más preciso sobre la disponibilidad.

Las bases de datos NoSql utilizan diferentes estructuras de datos en comparación con las bases de datos relacionales. Acelera algunas operaciones en NoSQL. La idoneidad de una base de datos NoSQL determinada depende del problema que debe resolver.

NoSQL frente a base de datos relacional

La siguiente tabla enumera los puntos que diferencian una base de datos relacional de una base de datos NoSQL.

Base de datos relacional Base de datos NoSql
Admite un potente lenguaje de consulta. Admite un lenguaje de consulta muy simple.
Tiene un esquema fijo. Sin esquema fijo.
Sigue ACID (atomicidad, consistencia, aislamiento y durabilidad). Es sólo "eventualmente consistente".
Soporta transacciones. No admite transacciones.

Además de Cassandra, tenemos las siguientes bases de datos NoSQL que son bastante populares:

  • Apache HBase- HBase es una base de datos distribuida de código abierto, no relacional, modelada a partir de BigTable de Google y está escrita en Java. Se desarrolla como parte del proyecto Apache Hadoop y se ejecuta sobre HDFS, proporcionando capacidades similares a BigTable para Hadoop.

  • MongoDB - MongoDB es un sistema de base de datos orientado a documentos multiplataforma que evita el uso de la estructura de base de datos relacional tradicional basada en tablas en favor de documentos similares a JSON con esquemas dinámicos que hacen que la integración de datos en ciertos tipos de aplicaciones sea más fácil y rápida.

¿Qué es Apache Cassandra?

Apache Cassandra es un sistema de almacenamiento (base de datos) de código abierto, distribuido y descentralizado / distribuido, para gestionar grandes cantidades de datos estructurados repartidos por todo el mundo. Proporciona un servicio de alta disponibilidad sin un solo punto de falla.

A continuación se enumeran algunos de los puntos notables de Apache Cassandra:

  • Es escalable, tolerante a fallas y consistente.

  • Es una base de datos orientada a columnas.

  • Su diseño de distribución se basa en Dynamo de Amazon y su modelo de datos en Bigtable de Google.

  • Creado en Facebook, se diferencia mucho de los sistemas de gestión de bases de datos relacionales.

  • Cassandra implementa un modelo de replicación estilo Dynamo sin un solo punto de falla, pero agrega un modelo de datos de "familia de columnas" más poderoso.

  • Cassandra está siendo utilizada por algunas de las empresas más grandes como Facebook, Twitter, Cisco, Rackspace, ebay, Twitter, Netflix y más.

Características de Cassandra

Cassandra se ha vuelto tan popular debido a sus excelentes características técnicas. A continuación se presentan algunas de las características de Cassandra:

  • Elastic scalability- Cassandra es altamente escalable; permite agregar más hardware para dar cabida a más clientes y más datos según los requisitos.

  • Always on architecture - Cassandra no tiene un solo punto de falla y está continuamente disponible para aplicaciones críticas para el negocio que no pueden permitirse una falla.

  • Fast linear-scale performance- Cassandra es linealmente escalable, es decir, aumenta su rendimiento a medida que aumenta la cantidad de nodos en el clúster. Por tanto, mantiene un tiempo de respuesta rápido.

  • Flexible data storage- Cassandra admite todos los formatos de datos posibles, incluidos: estructurados, semiestructurados y no estructurados. Puede adaptarse dinámicamente a los cambios en sus estructuras de datos de acuerdo con sus necesidades.

  • Easy data distribution - Cassandra ofrece la flexibilidad de distribuir datos donde los necesite mediante la replicación de datos en varios centros de datos.

  • Transaction support - Cassandra admite propiedades como atomicidad, consistencia, aislamiento y durabilidad (ACID).

  • Fast writes- Cassandra fue diseñado para ejecutarse en hardware básico barato. Realiza escrituras increíblemente rápidas y puede almacenar cientos de terabytes de datos, sin sacrificar la eficiencia de lectura.

Historia de Cassandra

  • Cassandra se desarrolló en Facebook para la búsqueda en la bandeja de entrada.
  • Fue de código abierto por Facebook en julio de 2008.
  • Cassandra fue aceptada en Apache Incubator en marzo de 2009.
  • Se convirtió en un proyecto de alto nivel de Apache desde febrero de 2010.

El objetivo de diseño de Cassandra es manejar cargas de trabajo de big data en múltiples nodos sin ningún punto único de falla. Cassandra tiene un sistema distribuido de igual a igual en todos sus nodos y los datos se distribuyen entre todos los nodos de un clúster.

  • Todos los nodos de un clúster desempeñan el mismo papel. Cada nodo es independiente y al mismo tiempo está interconectado con otros nodos.

  • Cada nodo de un clúster puede aceptar solicitudes de lectura y escritura, independientemente de dónde se encuentren realmente los datos en el clúster.

  • Cuando un nodo deja de funcionar, las solicitudes de lectura / escritura se pueden atender desde otros nodos de la red.

Replicación de datos en Cassandra

En Cassandra, uno o más de los nodos de un clúster actúan como réplicas de un dato determinado. Si se detecta que algunos de los nodos respondieron con un valor desactualizado, Cassandra devolverá el valor más reciente al cliente. Después de devolver el valor más reciente, Cassandra realiza unread repair en segundo plano para actualizar los valores obsoletos.

La siguiente figura muestra una vista esquemática de cómo Cassandra usa la replicación de datos entre los nodos de un clúster para garantizar que no haya un solo punto de falla.

Note - Cassandra usa el Gossip Protocol en segundo plano para permitir que los nodos se comuniquen entre sí y detecten cualquier nodo defectuoso en el clúster.

Componentes de Cassandra

Los componentes clave de Cassandra son los siguientes:

  • Node - Es el lugar donde se almacenan los datos.

  • Data center - Es una colección de nodos relacionados.

  • Cluster - Un clúster es un componente que contiene uno o más centros de datos.

  • Commit log- El registro de confirmación es un mecanismo de recuperación de fallos en Cassandra. Cada operación de escritura se escribe en el registro de confirmación.

  • Mem-table- Una tabla de memoria es una estructura de datos residente en memoria. Después del registro de confirmación, los datos se escribirán en la tabla de memoria. A veces, para una familia de una sola columna, habrá varias mem-tables.

  • SSTable - Es un archivo de disco al que se vacían los datos de la tabla de memoria cuando su contenido alcanza un valor umbral.

  • Bloom filter- Estos no son más que algoritmos rápidos, no deterministas, para probar si un elemento es miembro de un conjunto. Es un tipo especial de caché. Se accede a los filtros Bloom después de cada consulta.

Lenguaje de consulta de Cassandra

Los usuarios pueden acceder a Cassandra a través de sus nodos utilizando Cassandra Query Language (CQL). CQL trata la base de datos(Keyspace)como contenedor de mesas. Los programadores utilizancqlsh: un mensaje para trabajar con CQL o controladores de idioma de aplicaciones independientes.

Los clientes se acercan a cualquiera de los nodos para sus operaciones de lectura y escritura. Ese nodo (coordinador) juega un proxy entre el cliente y los nodos que contienen los datos.

Operaciones de escritura

Cada actividad de escritura de los nodos es capturada por el commit logsescrito en los nodos. Posteriormente los datos serán capturados y almacenados en elmem-table. Siempre que la tabla de memoria esté llena, los datos se escribirán en el SStablearchivo de datos. Todas las escrituras se particionan y replican automáticamente en todo el clúster. Cassandra consolida periódicamente las SSTables, descartando los datos innecesarios.

Leer operaciones

Durante las operaciones de lectura, Cassandra obtiene valores de la tabla de memoria y comprueba el filtro de floración para encontrar la SSTable adecuada que contenga los datos necesarios.

El modelo de datos de Cassandra es significativamente diferente de lo que normalmente vemos en un RDBMS. Este capítulo proporciona una descripción general de cómo Cassandra almacena sus datos.

Racimo

La base de datos de Cassandra se distribuye en varias máquinas que operan juntas. El contenedor más externo se conoce como Cluster. Para el manejo de fallas, cada nodo contiene una réplica y, en caso de falla, la réplica se hace cargo. Cassandra organiza los nodos en un clúster, en un formato de anillo, y les asigna datos.

Espacio de claves

Keyspace es el contenedor más externo de datos en Cassandra. Los atributos básicos de un espacio de claves en Cassandra son:

  • Replication factor - Es la cantidad de máquinas en el clúster que recibirán copias de los mismos datos.

  • Replica placement strategy- No es más que la estrategia de colocar réplicas en el ring. Contamos con estrategias comosimple strategy (estrategia basada en rack), old network topology strategy (estrategia de reconocimiento de rack), y network topology strategy (estrategia de centro de datos compartido).

  • Column families- Keyspace es un contenedor para una lista de una o más familias de columnas. Una familia de columnas, a su vez, es un contenedor de una colección de filas. Cada fila contiene columnas ordenadas. Las familias de columnas representan la estructura de sus datos. Cada espacio de teclas tiene al menos una y, a menudo, muchas familias de columnas.

La sintaxis para crear un espacio de claves es la siguiente:

CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};

La siguiente ilustración muestra una vista esquemática de un espacio de claves.

Familia de columnas

Una familia de columnas es un contenedor para una colección ordenada de filas. Cada fila, a su vez, es una colección ordenada de columnas. La siguiente tabla enumera los puntos que diferencian una familia de columnas de una tabla de bases de datos relacionales.

Tabla relacional Familia de columnas Cassandra
Un esquema en un modelo relacional es fijo. Una vez que definimos ciertas columnas para una tabla, al insertar datos, en cada fila todas las columnas deben llenarse al menos con un valor nulo. En Cassandra, aunque las familias de columnas están definidas, las columnas no. Puede agregar libremente cualquier columna a cualquier familia de columnas en cualquier momento.
Las tablas relacionales definen solo columnas y el usuario completa la tabla con valores. En Cassandra, una tabla contiene columnas o se puede definir como una superfamilia de columnas.

Una familia de columnas Cassandra tiene los siguientes atributos:

  • keys_cached - Representa el número de ubicaciones para mantener en caché por SSTable.

  • rows_cached - Representa la cantidad de filas cuyo contenido completo se almacenará en la memoria caché.

  • preload_row_cache - Especifica si desea rellenar previamente la caché de filas.

Note − A diferencia de las tablas relacionales en las que el esquema de una familia de columnas no es fijo, Cassandra no obliga a las filas individuales a tener todas las columnas.

La siguiente figura muestra un ejemplo de una familia de columnas Cassandra.

Columna

Una columna es la estructura de datos básica de Cassandra con tres valores, a saber, el nombre de la clave o columna, el valor y una marca de tiempo. A continuación se muestra la estructura de una columna.

Supercolumna

Una supercolumna es una columna especial, por lo tanto, también es un par clave-valor. Pero una supercolumna almacena un mapa de subcolumnas.

Generalmente, las familias de columnas se almacenan en el disco en archivos individuales. Por lo tanto, para optimizar el rendimiento, es importante mantener las columnas que probablemente consultará juntas en la misma familia de columnas, y una súper columna puede ser útil aquí. A continuación se muestra la estructura de una súper columna.

Modelos de datos de Cassandra y RDBMS

La siguiente tabla enumera los puntos que diferencian el modelo de datos de Cassandra del de un RDBMS.

RDBMS Casandra
RDBMS se ocupa de datos estructurados. Cassandra se ocupa de datos no estructurados.
Tiene un esquema fijo. Cassandra tiene un esquema flexible.
En RDBMS, una tabla es una matriz de matrices. (FILA x COLUMNA) En Cassandra, una tabla es una lista de "pares clave-valor anidados". (ROW x COLUMN key x COLUMN value)
La base de datos es el contenedor más externo que contiene los datos correspondientes a una aplicación. Keyspace es el contenedor más externo que contiene datos correspondientes a una aplicación.
Las tablas son las entidades de una base de datos. Las tablas o familias de columnas son la entidad de un espacio de claves.
Row es un registro individual en RDBMS. Row es una unidad de replicación en Cassandra.
La columna representa los atributos de una relación. La columna es una unidad de almacenamiento en Cassandra.
RDBMS admite los conceptos de claves foráneas, uniones. Las relaciones se representan mediante colecciones.

Se puede acceder a Cassandra utilizando cqlsh, así como controladores de diferentes idiomas. Este capítulo explica cómo configurar los entornos cqlsh y java para trabajar con Cassandra.

Configuración previa a la instalación

Antes de instalar Cassandra en un entorno Linux, necesitamos configurar Linux usando ssh(Cubierta segura). Siga los pasos que se indican a continuación para configurar el entorno Linux.

Crear un usuario

Al principio, se recomienda crear un usuario separado para Hadoop para aislar el sistema de archivos Hadoop del sistema de archivos Unix. Siga los pasos que se indican a continuación para crear un usuario.

  • Abra la raíz usando el comando “su”.

  • Cree un usuario desde la cuenta raíz usando el comando “useradd username”.

  • Ahora puede abrir una cuenta de usuario existente usando el comando “su username”.

Abra la terminal de Linux y escriba los siguientes comandos para crear un usuario.

$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd

Configuración de SSH y generación de claves

La configuración de SSH es necesaria para realizar diferentes operaciones en un clúster, como iniciar, detener y distribuir operaciones de shell de demonio. Para autenticar diferentes usuarios de Hadoop, es necesario proporcionar un par de claves pública / privada para un usuario de Hadoop y compartirlo con diferentes usuarios.

Los siguientes comandos se utilizan para generar un par clave-valor mediante SSH:

  • copie el formulario de claves públicas id_rsa.pub a allowed_keys,
  • y proporcionar propietario,
  • permisos de lectura y escritura en el archivo Authorized_keys respectivamente.
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys
  • Verificar ssh:
ssh localhost

Instalación de Java

Java es el principal requisito previo para Cassandra. En primer lugar, debe verificar la existencia de Java en su sistema usando el siguiente comando:

$ java -version

Si todo funciona bien, le dará el siguiente resultado.

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Si no tiene Java en su sistema, siga los pasos que se indican a continuación para instalar Java.

Paso 1

Descargue java (JDK <última versión> - X64.tar.gz) desde el siguiente enlace:

Then jdk-7u71-linux-x64.tar.gz will be downloaded onto your system.

Paso 2

Generalmente, encontrará el archivo java descargado en la carpeta Descargas. Verifíquelo y extraiga eljdk-7u71-linux-x64.gz archivo usando los siguientes comandos.

$ cd Downloads/
$ ls jdk-7u71-linux-x64.gz $ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

Paso 3

Para que Java esté disponible para todos los usuarios, debe moverlo a la ubicación “/ usr / local /”. Abra root y escriba los siguientes comandos.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

Etapa 4

Para configurar PATH y JAVA_HOME variables, agregue los siguientes comandos a ~/.bashrc archivo.

export JAVA_HOME = /usr/local/jdk1.7.0_71
export PATH = $PATH:$JAVA_HOME/bin

Ahora aplique todos los cambios en el sistema en ejecución actual.

$ source ~/.bashrc

Paso 5

Utilice los siguientes comandos para configurar alternativas de Java.

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2
# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2
# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2

# alternatives --set java usr/local/java/bin/java
# alternatives --set javac usr/local/java/bin/javac
# alternatives --set jar usr/local/java/bin/jar

Ahora usa el java -version comando desde el terminal como se explicó anteriormente.

Marcando el camino

Establezca la ruta de la ruta de Cassandra en “/.bashrc” como se muestra a continuación.

[hadoop@linux ~]$ gedit ~/.bashrc

export CASSANDRA_HOME = ~/cassandra
export PATH = $PATH:$CASSANDRA_HOME/bin

Descarga Cassandra

Apache Cassandra está disponible en Download Link Cassandra usando el siguiente comando.

$ wget http://supergsego.com/apache/cassandra/2.1.2/apache-cassandra-2.1.2-bin.tar.gz

Descomprima Cassandra usando el comando zxvf Como se muestra abajo.

$ tar zxvf apache-cassandra-2.1.2-bin.tar.gz.

Cree un nuevo directorio llamado cassandra y mueva el contenido del archivo descargado a él como se muestra a continuación.

$ mkdir Cassandra $ mv apache-cassandra-2.1.2/* cassandra.

Configurar Cassandra

Abre el cassandra.yaml: archivo, que estará disponible en el bin directorio de Cassandra.

$ gedit cassandra.yaml

Note - Si ha instalado Cassandra desde un paquete deb o rpm, los archivos de configuración se ubicarán en /etc/cassandra directorio de Cassandra.

El comando anterior abre el cassandra.yamlarchivo. Verifique las siguientes configuraciones. De forma predeterminada, estos valores se establecerán en los directorios especificados.

  • data_file_directories “/var/lib/cassandra/data”

  • commitlog_directory “/var/lib/cassandra/commitlog”

  • directorio_cachés_guardado “/var/lib/cassandra/saved_caches”

Asegúrese de que estos directorios existan y se puedan escribir en ellos, como se muestra a continuación.

Crear directorios

Como superusuario, crea los dos directorios /var/lib/cassandra y /var./log/cassandra en el que Cassandra escribe sus datos.

[root@linux cassandra]# mkdir /var/lib/cassandra
[root@linux cassandra]# mkdir /var/log/cassandra

Dar permisos a carpetas

Otorgue permisos de lectura y escritura a las carpetas recién creadas como se muestra a continuación.

[root@linux /]# chmod 777 /var/lib/cassandra
[root@linux /]# chmod 777 /var/log/cassandra

Inicio Cassandra

Para iniciar Cassandra, abra la ventana de terminal, navegue hasta el directorio de inicio de Cassandra / inicio, donde desempaquetó Cassandra, y ejecute el siguiente comando para iniciar su servidor Cassandra.

$ cd $CASSANDRA_HOME $./bin/cassandra -f

El uso de la opción –f le dice a Cassandra que permanezca en primer plano en lugar de ejecutarse como un proceso en segundo plano. Si todo va bien, puede ver que se inicia el servidor Cassandra.

Entorno de programación

Para configurar Cassandra mediante programación, descargue los siguientes archivos jar:

  • slf4j-api-1.7.5.jar
  • cassandra-driver-core-2.0.2.jar
  • guava-16.0.1.jar
  • metrics-core-3.0.2.jar
  • netty-3.9.0.Final.jar

Colócalos en una carpeta separada. Por ejemplo, estamos descargando estos frascos en una carpeta llamada“Cassandra_jars”.

Establezca la ruta de clase para esta carpeta en “.bashrc”archivo como se muestra a continuación.

[hadoop@linux ~]$ gedit ~/.bashrc //Set the following class path in the .bashrc file. export CLASSPATH = $CLASSPATH:/home/hadoop/Cassandra_jars/*

Entorno Eclipse

Abra Eclipse y cree un nuevo proyecto llamado Cassandra _Examples.

Haga clic derecho en el proyecto, seleccione Build Path→Configure Build Path Como se muestra abajo.

Abrirá la ventana de propiedades. En la pestaña Bibliotecas, seleccioneAdd External JARs. Navegue hasta el directorio donde guardó sus archivos jar. Seleccione los cinco archivos jar y haga clic en Aceptar como se muestra a continuación.

En Bibliotecas de referencia, puede ver todos los frascos necesarios agregados como se muestra a continuación:

Dependencias de Maven

A continuación se muestra el pom.xml para construir un proyecto de Cassandra usando maven.

<project xmlns = "http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"  
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <build>
      <sourceDirectory>src</sourceDirectory>
      <plugins>
         <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
				
               <configuration>
                  <source>1.7</source>
                  <target>1.7</target>
               </configuration>
					
         </plugin>
      </plugins>
   </build> 

   <dependencies>
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>1.7.5</version>
      </dependency>
 
      <dependency>
         <groupId>com.datastax.cassandra</groupId>
         <artifactId>cassandra-driver-core</artifactId>
         <version>2.0.2</version>
      </dependency>
 
      <dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>16.0.1</version>
      </dependency>
 
      <dependency>
         <groupId>com.codahale.metrics</groupId>
         <artifactId>metrics-core</artifactId>
         <version>3.0.2</version>
      </dependency>
 
      <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty</artifactId>
         <version>3.9.0.Final</version>
      </dependency>
   </dependencies>

</project>

Este capítulo cubre todas las clases importantes de Cassandra.

Racimo

Esta clase es el principal punto de entrada del conductor. Pertenece acom.datastax.driver.core paquete.

Métodos

S. No. Métodos y descripción
1

Session connect()

Crea una nueva sesión en el clúster actual y la inicializa.

2

void close()

Se utiliza para cerrar la instancia del clúster.

3

static Cluster.Builder builder()

Se utiliza para crear una nueva instancia de Cluster.Builder.

Cluster.Builder

Esta clase se usa para instanciar el Cluster.Builder clase.

Métodos

S. No Métodos y descripción
1

Cluster.Builder addContactPoint(String address)

Este método agrega un punto de contacto al clúster.

2

Cluster build()

Este método construye el clúster con los puntos de contacto dados.

Sesión

Esta interfaz contiene las conexiones al clúster de Cassandra. Con esta interfaz, puede ejecutarCQLconsultas. Pertenece acom.datastax.driver.core paquete.

Métodos

S. No. Métodos y descripción
1

void close()

Este método se utiliza para cerrar la instancia de sesión actual.

2

ResultSet execute(Statement statement)

Este método se utiliza para ejecutar una consulta. Requiere un objeto de declaración.

3

ResultSet execute(String query)

Este método se utiliza para ejecutar una consulta. Requiere una consulta en forma de objeto String.

4

PreparedStatement prepare(RegularStatement statement)

Este método prepara la consulta proporcionada. La consulta se proporcionará en forma de declaración.

5

PreparedStatement prepare(String query)

Este método prepara la consulta proporcionada. La consulta debe proporcionarse en forma de cadena.

Este capítulo presenta el shell del lenguaje de consulta de Cassandra y explica cómo usar sus comandos.

De forma predeterminada, Cassandra proporciona un shell de lenguaje de consulta de Cassandra rápido (cqlsh)que permite a los usuarios comunicarse con él. Usando este shell, puede ejecutarCassandra Query Language (CQL).

Usando cqlsh, puede

  • definir un esquema,
  • insertar datos y
  • ejecutar una consulta.

Iniciando cqlsh

Inicie cqlsh usando el comando cqlshComo se muestra abajo. Da el indicador de Cassandra cqlsh como salida.

[hadoop@linux bin]$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
cqlsh>

Cqlsh- Como se mencionó anteriormente, este comando se usa para iniciar el indicador cqlsh. Además, también admite algunas opciones más. La siguiente tabla explica todas las opciones decqlsh y su uso.

Opciones Uso
cqlsh --ayuda Muestra temas de ayuda sobre las opciones de cqlsh comandos.
cqlsh --versión Proporciona la versión de cqlsh que está utilizando.
cqlsh --color Dirige al shell para que utilice la salida en color.
cqlsh --debug Muestra información adicional de depuración.

cqlsh --execute

cql_statement

Indica al shell que acepte y ejecute un comando CQL.
cqlsh --file = “file name” Si usa esta opción, Cassandra ejecuta el comando en el archivo dado y sale.
cqlsh --no-color Indica a Cassandra que no utilice la salida en color.
cqlsh -u “user name” Con esta opción, puede autenticar a un usuario. El nombre de usuario predeterminado es: cassandra.
cqlsh-p “pass word” Con esta opción, puede autenticar a un usuario con una contraseña. La contraseña predeterminada es: cassandra.

Comandos Cqlsh

Cqlsh tiene algunos comandos que permiten a los usuarios interactuar con él. Los comandos se enumeran a continuación.

Comandos de shell documentados

A continuación se muestran los comandos de shell documentados de Cqlsh. Estos son los comandos que se utilizan para realizar tareas como mostrar temas de ayuda, salir de cqlsh, describir, etc.

  • HELP - Muestra temas de ayuda para todos los comandos cqlsh.

  • CAPTURE - Captura el resultado de un comando y lo agrega a un archivo.

  • CONSISTENCY - Muestra el nivel de coherencia actual o establece un nuevo nivel de coherencia.

  • COPY - Copia datos hacia y desde Cassandra.

  • DESCRIBE - Describe el grupo actual de Cassandra y sus objetos.

  • EXPAND - Expande la salida de una consulta verticalmente.

  • EXIT - Con este comando, puede terminar cqlsh.

  • PAGING - Habilita o deshabilita la paginación de consultas.

  • SHOW - Muestra los detalles de la sesión cqlsh actual, como la versión de Cassandra, el host o los supuestos de tipo de datos.

  • SOURCE - Ejecuta un archivo que contiene declaraciones CQL.

  • TRACING - Habilita o deshabilita el seguimiento de solicitudes.

Comandos de definición de datos CQL

  • CREATE KEYSPACE - Crea un KeySpace en Cassandra.

  • USE - Se conecta a un KeySpace creado.

  • ALTER KEYSPACE - Cambia las propiedades de un KeySpace.

  • DROP KEYSPACE - Elimina un KeySpace

  • CREATE TABLE - Crea una tabla en un KeySpace.

  • ALTER TABLE - Modifica las propiedades de columna de una tabla.

  • DROP TABLE - Quita una mesa.

  • TRUNCATE - Elimina todos los datos de una tabla.

  • CREATE INDEX - Define un nuevo índice en una sola columna de una tabla.

  • DROP INDEX - Elimina un índice con nombre.

Comandos de manipulación de datos CQL

  • INSERT - Agrega columnas para una fila en una tabla.

  • UPDATE - Actualiza una columna de una fila.

  • DELETE - Elimina datos de una tabla.

  • BATCH - Ejecuta varias declaraciones DML a la vez.

Cláusulas CQL

  • SELECT - Esta cláusula lee datos de una tabla

  • WHERE - La cláusula where se usa junto con select para leer datos específicos.

  • ORDERBY - La cláusula orderby se usa junto con select para leer datos específicos en un orden específico.

Cassandra proporciona comandos de shell documentados además de los comandos CQL. A continuación se muestran los comandos de shell documentados de Cassandra.

Ayuda

El comando HELP muestra una sinopsis y una breve descripción de todos los comandos cqlsh. A continuación se muestra el uso del comando de ayuda.

cqlsh> help

Documented shell commands:
===========================
CAPTURE COPY DESCRIBE EXPAND PAGING SOURCE
CONSISTENCY DESC EXIT HELP SHOW TRACING.

CQL help topics:
================
ALTER           CREATE_TABLE_OPTIONS       SELECT
ALTER_ADD       CREATE_TABLE_TYPES         SELECT_COLUMNFAMILY
ALTER_ALTER     CREATE_USER                SELECT_EXPR
ALTER_DROP      DELETE                     SELECT_LIMIT
ALTER_RENAME    DELETE_COLUMNS             SELECT_TABLE

Capturar

Este comando captura el resultado de un comando y lo agrega a un archivo. Por ejemplo, eche un vistazo al siguiente código que captura la salida en un archivo llamadoOutputfile.

cqlsh> CAPTURE '/home/hadoop/CassandraProgs/Outputfile'

Cuando escribimos cualquier comando en la terminal, la salida será capturada por el archivo dado. A continuación se muestra el comando utilizado y la instantánea del archivo de salida.

cqlsh:tutorialspoint> select * from emp;

Puede desactivar la captura con el siguiente comando.

cqlsh:tutorialspoint> capture off;

Consistencia

Este comando muestra el nivel de coherencia actual o establece un nuevo nivel de coherencia.

cqlsh:tutorialspoint> CONSISTENCY
Current consistency level is 1.

Copiar

Este comando copia datos ay desde Cassandra a un archivo. A continuación se muestra un ejemplo para copiar la tabla denominadaemp al archivo myfile.

cqlsh:tutorialspoint> COPY emp (emp_id, emp_city, emp_name, emp_phone,emp_sal) TO ‘myfile’;
4 rows exported in 0.034 seconds.

Si abre y verifica el archivo proporcionado, puede encontrar los datos copiados como se muestra a continuación.

Describir

Este comando describe el grupo actual de Cassandra y sus objetos. Las variantes de este comando se explican a continuación.

Describe cluster - Este comando proporciona información sobre el clúster.

cqlsh:tutorialspoint> describe cluster;

Cluster: Test Cluster
Partitioner: Murmur3Partitioner

Range ownership:
                  -658380912249644557 [127.0.0.1]
                  -2833890865268921414 [127.0.0.1]
                  -6792159006375935836 [127.0.0.1]

Describe Keyspaces- Este comando enumera todos los espacios de claves en un clúster. A continuación se muestra el uso de este comando.

cqlsh:tutorialspoint> describe keyspaces;

system_traces system tp tutorialspoint

Describe tables- Este comando enumera todas las tablas en un espacio de teclas. A continuación se muestra el uso de este comando.

cqlsh:tutorialspoint> describe tables;
emp

Describe table- Este comando proporciona la descripción de una tabla. A continuación se muestra el uso de este comando.

cqlsh:tutorialspoint> describe table emp;

CREATE TABLE tutorialspoint.emp (
   emp_id int PRIMARY KEY,
   emp_city text,
   emp_name text,
   emp_phone varint,
   emp_sal varint
) WITH bloom_filter_fp_chance = 0.01
   AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
   AND comment = ''
   AND compaction = {'min_threshold': '4', 'class':
   'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy',
   'max_threshold': '32'}
	
   AND compression = {'sstable_compression':
   'org.apache.cassandra.io.compress.LZ4Compressor'}
	
   AND dclocal_read_repair_chance = 0.1
   AND default_time_to_live = 0
   AND gc_grace_seconds = 864000
   AND max_index_interval = 2048
   AND memtable_flush_period_in_ms = 0
   AND min_index_interval = 128
   AND read_repair_chance = 0.0
   AND speculative_retry = '99.0PERCENTILE';
CREATE INDEX emp_emp_sal_idx ON tutorialspoint.emp (emp_sal);

Describe el tipo

Este comando se utiliza para describir un tipo de datos definido por el usuario. A continuación se muestra el uso de este comando.

cqlsh:tutorialspoint> describe type card_details;

CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   mail text
);

Describir tipos

Este comando enumera todos los tipos de datos definidos por el usuario. A continuación se muestra el uso de este comando. Suponga que hay dos tipos de datos definidos por el usuario:card y card_details.

cqlsh:tutorialspoint> DESCRIBE TYPES;

card_details card

Expandir

Este comando se usa para expandir la salida. Antes de usar este comando, debe activar el comando expandir. A continuación se muestra el uso de este comando.

cqlsh:tutorialspoint> expand on;
cqlsh:tutorialspoint> select * from emp;

@ Row 1
-----------+------------
    emp_id | 1
  emp_city | Hyderabad
  emp_name | ram
 emp_phone | 9848022338
   emp_sal | 50000
  
@ Row 2
-----------+------------
    emp_id | 2
  emp_city | Delhi
  emp_name | robin
 emp_phone | 9848022339
   emp_sal | 50000
  
@ Row 3
-----------+------------
    emp_id | 4
  emp_city | Pune
  emp_name | rajeev
 emp_phone | 9848022331
   emp_sal | 30000
  
@ Row 4
-----------+------------
    emp_id | 3
  emp_city | Chennai
  emp_name | rahman
 emp_phone | 9848022330
   emp_sal | 50000
(4 rows)

Note - Puede desactivar la opción de expansión con el siguiente comando.

cqlsh:tutorialspoint> expand off;
Disabled Expanded output.

Salida

Este comando se usa para terminar el shell cql.

mostrar

Este comando muestra los detalles de la sesión cqlsh actual, como la versión de Cassandra, el host o los supuestos de tipo de datos. A continuación se muestra el uso de este comando.

cqlsh:tutorialspoint> show host;
Connected to Test Cluster at 127.0.0.1:9042.

cqlsh:tutorialspoint> show version;
[cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]

Fuente

Con este comando, puede ejecutar los comandos en un archivo. Supongamos que nuestro archivo de entrada es el siguiente:

Luego puede ejecutar el archivo que contiene los comandos como se muestra a continuación.

cqlsh:tutorialspoint> source '/home/hadoop/CassandraProgs/inputfile';

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | Delhi     |   robin  | 9848022339 | 50000
      3 | Pune      |   rajeev | 9848022331 | 30000
      4 | Chennai   |   rahman | 9848022330 | 50000
(4 rows)

Creando un espacio de claves usando Cqlsh

Un espacio de claves en Cassandra es un espacio de nombres que define la replicación de datos en los nodos. Un clúster contiene un espacio de claves por nodo. A continuación se muestra la sintaxis para crear un espacio de claves utilizando la declaraciónCREATE KEYSPACE.

Sintaxis

CREATE KEYSPACE <identifier> WITH <properties>

es decir

CREATE KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of   replicas’};

CREATE KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of  replicas’}

AND durable_writes = ‘Boolean value’;

La instrucción CREATE KEYSPACE tiene dos propiedades: replication y durable_writes.

Replicación

La opción de replicación es especificar el Replica Placement strategyy el número de réplicas deseadas. La siguiente tabla enumera todas las estrategias de ubicación de réplicas.

Nombre de la estrategia Descripción
Simple Strategy' Especifica un factor de replicación simple para el clúster.
Network Topology Strategy Con esta opción, puede establecer el factor de replicación para cada centro de datos de forma independiente.
Old Network Topology Strategy Esta es una estrategia de replicación heredada.

Con esta opción, puede indicarle a Cassandra si debe usar commitlogpara obtener actualizaciones sobre el KeySpace actual. Esta opción no es obligatoria y, de forma predeterminada, está establecida en true.

Ejemplo

A continuación se muestra un ejemplo de creación de un KeySpace.

  • Aquí estamos creando un KeySpace llamado TutorialsPoint.

  • Estamos utilizando la primera estrategia de colocación de réplicas, es decir, Simple Strategy.

  • Y estamos eligiendo el factor de replicación para 1 replica.

cqlsh.> CREATE KEYSPACE tutorialspoint
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};

Verificación

Puede verificar si la tabla se crea o no usando el comando Describe. Si usa este comando sobre espacios de teclas, mostrará todos los espacios de teclas creados como se muestra a continuación.

cqlsh> DESCRIBE keyspaces;

tutorialspoint system system_traces

Aquí puede observar el KeySpace recién creado tutorialspoint.

Durable_writes

De forma predeterminada, las propiedades durable_writes de una tabla se establecen en true,sin embargo, se puede establecer en falso. No puede establecer esta propiedad ensimplex strategy.

Ejemplo

A continuación se muestra el ejemplo que demuestra el uso de la propiedad de escritura duradera.

cqlsh> CREATE KEYSPACE test
... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }
... AND DURABLE_WRITES = false;

Verificación

Puede verificar si la propiedad durable_writes del KeySpace de prueba se estableció en falso consultando el System Keyspace. Esta consulta le proporciona todos los KeySpaces junto con sus propiedades.

cqlsh> SELECT * FROM system_schema.keyspaces;

  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------

           test |          False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1" : "3"}

 tutorialspoint |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "4"}

         system |           True |           org.apache.cassandra.locator.LocalStrategy | { }

  system_traces |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "2"}

(4 rows)

Aquí puede observar que la propiedad durable_writes de la prueba KeySpace se estableció en falso.

Usando un espacio de claves

Puede usar un KeySpace creado usando la palabra clave USE. Su sintaxis es la siguiente:

Syntax:USE <identifier>

Ejemplo

En el siguiente ejemplo, estamos usando KeySpace tutorialspoint.

cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>

Creación de un espacio de claves mediante la API de Java

Puede crear un espacio de claves utilizando el execute() método de Sessionclase. Siga los pasos que se indican a continuación para crear un espacio de claves utilizando la API de Java.

Paso 1: crear un objeto de clúster

En primer lugar, cree una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object

Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object

Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. El siguiente código muestra cómo crear un objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear un objeto de clúster en una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Crea una instancia de Session objeto usando el connect() método de Cluster clase como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“ Your keyspace name ” );

Paso 3: ejecutar la consulta

Puedes ejecutar CQL consultas utilizando el execute() método de Sessionclase. Pase la consulta en formato de cadena o comoStatement objeto de clase al execute()método. Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En este ejemplo, estamos creando un KeySpace llamado tp. Estamos utilizando la primera estrategia de colocación de réplicas, es decir, estrategia simple, y estamos eligiendo el factor de réplica para 1 réplica.

Debe almacenar la consulta en una variable de cadena y pasarla al método execute () como se muestra a continuación.

String query = "CREATE KEYSPACE tp WITH replication "
   + "= {'class':'SimpleStrategy', 'replication_factor':1}; ";
session.execute(query);

Paso 4: Utilice el KeySpace

Puede usar un KeySpace creado usando el método execute () como se muestra a continuación.

execute(“ USE tp ” );

A continuación se muestra el programa completo para crear y usar un espacio de claves en Cassandra usando la API de Java.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_KeySpace {

   public static void main(String args[]){

      //Query
      String query = "CREATE KEYSPACE tp WITH replication "
         + "= {'class':'SimpleStrategy', 'replication_factor':1};";
                    
      //creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect();
     
      //Executing the query
      session.execute(query);
     
      //using the KeySpace
      session.execute("USE tp");
      System.out.println("Keyspace created"); 
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Create_KeySpace.java
$java Create_KeySpace

En condiciones normales, producirá la siguiente salida:

Keyspace created

Modificar un espacio clave

ALTER KEYSPACE se puede utilizar para alterar propiedades como el número de réplicas y durable_writes de un KeySpace. A continuación se muestra la sintaxis de este comando.

Sintaxis

ALTER KEYSPACE <identifier> WITH <properties>

es decir

ALTER KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of  replicas’};

Las propiedades de ALTER KEYSPACEson los mismos que CREATE KEYSPACE. Tiene dos propiedades:replication y durable_writes.

Replicación

La opción de replicación especifica la estrategia de ubicación de la réplica y el número de réplicas deseadas.

Durable_writes

Con esta opción, puede indicarle a Cassandra si debe usar el registro de confirmación para las actualizaciones del KeySpace actual. Esta opción no es obligatoria y, de forma predeterminada, está establecida en true.

Ejemplo

A continuación se muestra un ejemplo de alteración de un KeySpace.

  • Aquí estamos alterando un KeySpace llamado TutorialsPoint.

  • Estamos cambiando el factor de replicación de 1 a 3.

cqlsh.> ALTER KEYSPACE tutorialspoint
WITH replication = {'class':'NetworkTopologyStrategy', 'replication_factor' : 3};

Modificación de Durable_writes

También puede modificar la propiedad durable_writes de un KeySpace. A continuación se muestra la propiedad durable_writes deltest KeySpace.

SELECT * FROM system_schema.keyspaces;

  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------
           test |          False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1":"3"}

 tutorialspoint |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"4"}

         system |           True |           org.apache.cassandra.locator.LocalStrategy | { }

  system_traces |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"2"}
(4 rows)

ALTER KEYSPACE test
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3}
AND DURABLE_WRITES = true;

Una vez más, si verifica las propiedades de KeySpaces, producirá el siguiente resultado.

SELECT * FROM system_schema.keyspaces;
  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------
           test |           True | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1":"3"}

 tutorialspoint |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"4"}

         system |           True |           org.apache.cassandra.locator.LocalStrategy | { }

  system_traces |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"2"}

(4 rows)

Modificación de un espacio de claves mediante la API de Java

Puede modificar un espacio de teclas utilizando el execute() método de Sessionclase. Siga los pasos que se indican a continuación para modificar un espacio de claves utilizando la API de Java

Paso 1: crear un objeto de clúster

En primer lugar, cree una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. El siguiente código muestra cómo crear un objeto de clúster.

//Building a cluster

Cluster cluster = builder.build();

Puede crear el objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Crea una instancia de Session objeto usando el connect() método de Clusterclase como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“ Your keyspace name ” );

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o comoStatementobjeto de clase al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En este ejemplo,

  • Estamos alterando un espacio de teclas llamado tp. Estamos modificando la opción de replicación de estrategia simple a estrategia de topología de red.

  • Estamos alterando el durable_writes a falso

Debe almacenar la consulta en una variable de cadena y pasarla al método execute () como se muestra a continuación.

//Query
String query = "ALTER KEYSPACE tp WITH replication " + "=   {'class':'NetworkTopologyStrategy', 'datacenter1':3}" +" AND DURABLE_WRITES = false;";
session.execute(query);

A continuación se muestra el programa completo para crear y usar un espacio de claves en Cassandra usando la API de Java.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Alter_KeySpace {
   public static void main(String args[]){

      //Query
      String query = "ALTER KEYSPACE tp WITH replication " + "= {'class':'NetworkTopologyStrategy', 'datacenter1':3}"
         + "AND DURABLE_WRITES = false;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
   
      //Creating Session object
      Session session = cluster.connect();
 
      //Executing the query
      session.execute(query);
 
      System.out.println("Keyspace altered");
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Alter_KeySpace.java
$java Alter_KeySpace

En condiciones normales, produce la siguiente salida:

Keyspace Altered

Dejar caer un espacio de claves

Puede soltar un KeySpace usando el comando DROP KEYSPACE. A continuación se muestra la sintaxis para soltar un KeySpace.

Sintaxis

DROP KEYSPACE <identifier>

es decir

DROP KEYSPACE “KeySpace name”

Ejemplo

El siguiente código elimina el espacio de claves tutorialspoint.

cqlsh> DROP KEYSPACE tutorialspoint;

Verificación

Verifique los espacios de teclas con el comando Describe y compruebe si la tabla se ha eliminado como se muestra a continuación.

cqlsh> DESCRIBE keyspaces;

system system_traces

Dado que hemos eliminado el punto de tutoría del espacio de claves, no lo encontrará en la lista de espacios de claves.

Descartar un espacio de claves usando la API de Java

Puede crear un espacio de claves utilizando el método execute () de la clase Session. Siga los pasos que se indican a continuación para soltar un espacio de claves utilizando la API de Java.

Paso 1: crear un objeto de clúster

En primer lugar, cree una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object 
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. El siguiente código muestra cómo crear un objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear un objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session utilizando el método connect () de la clase Cluster como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“ Your keyspace name”);

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o como un objeto de clase Statement al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en cqlsh.

En el siguiente ejemplo, estamos eliminando un espacio de teclas llamado tp. Debe almacenar la consulta en una variable de cadena y pasarla al método execute () como se muestra a continuación.

String query = "DROP KEYSPACE tp; ";

session.execute(query);

A continuación se muestra el programa completo para crear y usar un espacio de claves en Cassandra usando la API de Java.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Drop_KeySpace {

   public static void main(String args[]){

      //Query
      String query = "Drop KEYSPACE tp";

      //creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect();
    
      //Executing the query
      session.execute(query);
      System.out.println("Keyspace deleted");
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Delete_KeySpace.java
$java Delete_KeySpace

En condiciones normales, debería producir el siguiente resultado:

Keyspace deleted

Crear una tabla

Puedes crear una tabla usando el comando CREATE TABLE. A continuación se muestra la sintaxis para crear una tabla.

Sintaxis

CREATE (TABLE | COLUMNFAMILY) <tablename>
('<column-definition>' , '<column-definition>')
(WITH <option> AND <option>)

Definición de una columna

Puede definir una columna como se muestra a continuación.

column name1 data type,
column name2 data type,

example:

age int,
name text

Clave primaria

La clave principal es una columna que se utiliza para identificar de forma exclusiva una fila. Por lo tanto, definir una clave principal es obligatorio al crear una tabla. Una clave primaria está formada por una o más columnas de una tabla. Puede definir una clave principal de una tabla como se muestra a continuación.

CREATE TABLE tablename(
   column1 name datatype PRIMARYKEY,
   column2 name data type,
   column3 name data type.
   )

or

CREATE TABLE tablename(
   column1 name datatype PRIMARYKEY,
   column2 name data type,
   column3 name data type,
   PRIMARY KEY (column1)
   )

Ejemplo

A continuación se muestra un ejemplo para crear una tabla en Cassandra usando cqlsh. Aquí estamos

  • Uso del punto de tutoriales del espacio de claves

  • Creando una tabla llamada emp

Tendrá detalles como el nombre del empleado, identificación, ciudad, salario y número de teléfono. La identificación del empleado es la clave principal.

cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>; CREATE TABLE emp(
   emp_id int PRIMARY KEY,
   emp_name text,
   emp_city text,
   emp_sal varint,
   emp_phone varint
   );

Verificación

La declaración de selección le dará el esquema. Verifique la tabla usando la declaración de selección como se muestra a continuación.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+----------+----------+-----------+---------

(0 rows)

Aquí puede observar la tabla creada con las columnas dadas. Dado que hemos eliminado el punto de tutoría del espacio de claves, no lo encontrará en la lista de espacios de claves.

Crear una tabla usando la API de Java

Puede crear una tabla usando el método execute () de la clase Session. Siga los pasos que se indican a continuación para crear una tabla utilizando la API de Java.

Paso 1: crear un objeto de clúster

En primer lugar, cree una instancia del Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. El siguiente código muestra cómo crear un objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear un objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session usando el connect() método de Cluster clase como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“ Your keyspace name ” );

Aquí estamos usando el espacio de teclas llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Session session = cluster.connect(“ tp” );

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o como un objeto de clase Statement al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en cqlsh.

En el siguiente ejemplo, estamos creando una tabla llamada emp. Debe almacenar la consulta en una variable de cadena y pasarla al método execute () como se muestra a continuación.

//Query
String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
   + "emp_name text, "
   + "emp_city text, "
   + "emp_sal varint, "
   + "emp_phone varint );";
session.execute(query);

A continuación se muestra el programa completo para crear y usar un espacio de claves en Cassandra usando la API de Java.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_Table {

   public static void main(String args[]){

      //Query
      String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
         + "emp_name text, "
         + "emp_city text, "
         + "emp_sal varint, "
         + "emp_phone varint );";
		
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
   
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //Executing the query
      session.execute(query);
 
      System.out.println("Table created");
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Create_Table.java
$java Create_Table

En condiciones normales, debería producir el siguiente resultado:

Table created

Modificar una tabla

Puedes alterar una tabla usando el comando ALTER TABLE. A continuación se muestra la sintaxis para crear una tabla.

Sintaxis

ALTER (TABLE | COLUMNFAMILY) <tablename> <instruction>

Usando el comando ALTER, puede realizar las siguientes operaciones:

  • Agregar una columna

  • Suelta una columna

Agregar una columna

Usando el comando ALTER, puede agregar una columna a una tabla. Al agregar columnas, debe tener cuidado de que el nombre de la columna no entre en conflicto con los nombres de columna existentes y de que la tabla no esté definida con la opción de almacenamiento compacto. A continuación se muestra la sintaxis para agregar una columna a una tabla.

ALTER TABLE table name
ADD  new column datatype;

Example

A continuación se muestra un ejemplo para agregar una columna a una tabla existente. Aquí estamos agregando una columna llamadaemp_email del tipo de datos de texto a la tabla denominada emp.

cqlsh:tutorialspoint> ALTER TABLE emp
   ... ADD emp_email text;

Verification

Utilice la instrucción SELECT para verificar si la columna se agrega o no. Aquí puede observar la columna emp_email recién agregada.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_email | emp_name | emp_phone | emp_sal
--------+----------+-----------+----------+-----------+---------

Dejar caer una columna

Usando el comando ALTER, puede eliminar una columna de una tabla. Antes de eliminar una columna de una tabla, verifique que la tabla no esté definida con la opción de almacenamiento compacto. A continuación se muestra la sintaxis para eliminar una columna de una tabla usando el comando ALTER.

ALTER table name
DROP column name;

Example

A continuación se muestra un ejemplo para eliminar una columna de una tabla. Aquí estamos eliminando la columna llamadaemp_email.

cqlsh:tutorialspoint> ALTER TABLE emp DROP emp_email;

Verification

Verifique si la columna se elimina usando el select declaración, como se muestra a continuación.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+----------+----------+-----------+---------
(0 rows)

Ya que emp_email La columna ha sido eliminada, ya no puede encontrarla.

Modificar una tabla usando la API de Java

Puede crear una tabla usando el método execute () de la clase Session. Siga los pasos que se indican a continuación para modificar una tabla con la API de Java.

Paso 1: crear un objeto de clúster

En primer lugar, cree una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. El siguiente código muestra cómo crear un objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear un objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session utilizando el método connect () de la clase Cluster como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“ Your keyspace name ” );
Session session = cluster.connect(“ tp” );

Aquí estamos usando el KeySpace llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o como un objeto de clase Statement al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En el siguiente ejemplo, estamos agregando una columna a una tabla llamada emp. Para hacerlo, debe almacenar la consulta en una variable de cadena y pasarla al método execute () como se muestra a continuación.

//Query
String query1 = "ALTER TABLE emp ADD emp_email text";
session.execute(query);

A continuación se muestra el programa completo para agregar una columna a una tabla existente.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Add_column {

   public static void main(String args[]){

      //Query
      String query = "ALTER TABLE emp ADD emp_email text";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
     
      //Creating Session object
      Session session = cluster.connect("tp");
    
      //Executing the query
      session.execute(query);
  
      System.out.println("Column added");
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Add_Column.java
$java Add_Column

En condiciones normales, debería producir el siguiente resultado:

Column added

Eliminar una columna

A continuación se muestra el programa completo para eliminar una columna de una tabla existente.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Delete_Column {

   public static void main(String args[]){

      //Query
      String query = "ALTER TABLE emp DROP emp_email;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
 
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //executing the query
      session.execute(query);
    
      System.out.println("Column deleted");
   }
 }

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Delete_Column.java
$java Delete_Column

En condiciones normales, debería producir el siguiente resultado:

Column deleted

Dejar caer una mesa

Puedes soltar una tabla usando el comando Drop Table. Su sintaxis es la siguiente:

Sintaxis

DROP TABLE <tablename>

Ejemplo

El siguiente código elimina una tabla existente de un KeySpace.

cqlsh:tutorialspoint> DROP TABLE emp;

Verificación

Utilice el comando Describir para verificar si la tabla se elimina o no. Dado que la tabla emp ha sido eliminada, no la encontrará en la lista de familias de columnas.

cqlsh:tutorialspoint> DESCRIBE COLUMNFAMILIES;
employee

Eliminar una tabla usando la API de Java

Puede eliminar una tabla usando el método execute () de la clase Session. Siga los pasos que se indican a continuación para eliminar una tabla mediante la API de Java.

Paso 1: crear un objeto de clúster

En primer lugar, cree una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación -

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. El siguiente código muestra cómo crear un objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear un objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session utilizando el método connect () de la clase Cluster como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“Your keyspace name”);

Aquí estamos usando el espacio de teclas llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Session session = cluster.connect(“tp”);

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o como un objeto de clase Statement al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En el siguiente ejemplo, estamos eliminando una tabla llamada emp. Debe almacenar la consulta en una variable de cadena y pasarla al método execute () como se muestra a continuación.

// Query

String query = "DROP TABLE emp1;”;
session.execute(query);

A continuación se muestra el programa completo para colocar una tabla en Cassandra usando la API de Java.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
 
public class Drop_Table {

   public static void main(String args[]){

      //Query
      String query = "DROP TABLE emp1;";
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tp");
   
      //Executing the query
      session.execute(query);
    
      System.out.println("Table dropped");
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Drop_Table.java
$java Drop_Table

En condiciones normales, debería producir el siguiente resultado:

Table dropped

Truncar una tabla

Puede truncar una tabla usando el comando TRUNCATE. Cuando trunca una tabla, todas las filas de la tabla se eliminan de forma permanente. A continuación se muestra la sintaxis de este comando.

Sintaxis

TRUNCATE <tablename>

Ejemplo

Supongamos que hay una tabla llamada student con los siguientes datos.

s_id nombre de s_branch s_aggregate
1 RAM ESO 70
2 Rahman EEE 75
3 robbin Mech 72

Cuando ejecuta la instrucción select para obtener la tabla student, le dará la siguiente salida.

cqlsh:tp> select * from student;

 s_id | s_aggregate | s_branch | s_name
------+-------------+----------+--------
    1 |          70 |       IT | ram
    2 |          75 |      EEE | rahman
    3 |          72 |     MECH | robbin

(3 rows)

Ahora trunca la tabla usando el comando TRUNCATE.

cqlsh:tp> TRUNCATE student;

Verificación

Verifique si la tabla está truncada ejecutando el selectdeclaración. A continuación se muestra la salida de la declaración de selección en la tabla de estudiantes después de truncar.

cqlsh:tp> select * from student;

 s_id | s_aggregate | s_branch | s_name
------+-------------+----------+--------

(0 rows)

Truncar una tabla usando la API de Java

Puede truncar una tabla usando el método execute () de la clase Session. Siga los pasos que se indican a continuación para truncar una tabla.

Paso 1: crear un objeto de clúster

En primer lugar, cree una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. El siguiente código muestra cómo crear un objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear un objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session utilizando el método connect () de la clase Cluster como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“ Your keyspace name ” );
Session session = cluster.connect(“ tp” );

Aquí estamos usando el espacio de teclas llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o como un objeto de clase Statement al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En el siguiente ejemplo, estamos truncando una tabla llamada emp. Tienes que almacenar la consulta en una variable de cadena y pasarla alexecute() método como se muestra a continuación.

//Query
String query = "TRUNCATE emp;;”;
session.execute(query);

A continuación se muestra el programa completo para truncar una tabla en Cassandra usando la API de Java.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Truncate_Table {

   public static void main(String args[]){
   
      //Query
      String query = "Truncate student;";
   
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
   
      //Creating Session object
      Session session = cluster.connect("tp");
   
      //Executing the query
      session.execute(query);
      System.out.println("Table truncated");
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Truncate_Table.java
$java Truncate_Table

En condiciones normales, debería producir el siguiente resultado:

Table truncated

Creando un índice usando Cqlsh

Puede crear un índice en Cassandra usando el comando CREATE INDEX. Su sintaxis es la siguiente:

CREATE INDEX <identifier> ON <tablename>

A continuación se muestra un ejemplo para crear un índice para una columna. Aquí estamos creando un índice para una columna 'emp_name' en una tabla llamada emp.

cqlsh:tutorialspoint> CREATE INDEX name ON emp1 (emp_name);

Crear un índice usando la API de Java

Puede crear un índice para una columna de una tabla usando el método execute () de la clase Session. Siga los pasos que se indican a continuación para crear un índice en una columna de una tabla.

Paso 1: crear un objeto de clúster

En primer lugar, cree una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. El siguiente código muestra cómo crear un objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear el objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session usando el método connect () de Cluster clase como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“ Your keyspace name ” );

Aquí estamos usando el KeySpace llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Session session = cluster.connect(“ tp” );

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o como un objeto de clase Statement al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En el siguiente ejemplo, estamos creando un índice para una columna llamada emp_name, en una tabla llamada emp. Debe almacenar la consulta en una variable de cadena y pasarla al método execute () como se muestra a continuación.

//Query
String query = "CREATE INDEX name ON emp1 (emp_name);";
session.execute(query);

A continuación se muestra el programa completo para crear un índice de una columna en una tabla en Cassandra usando la API de Java.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_Index {
 
   public static void main(String args[]){

      //Query
      String query = "CREATE INDEX name ON emp1 (emp_name);";
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
       
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //Executing the query
      session.execute(query);
      System.out.println("Index created");
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Create_Index.java
$java Create_Index

En condiciones normales, debería producir el siguiente resultado:

Index created

Dejar caer un índice

Puedes soltar un índice usando el comando DROP INDEX. Su sintaxis es la siguiente:

DROP INDEX <identifier>

A continuación se muestra un ejemplo para colocar un índice de una columna en una tabla. Aquí estamos soltando el índice del nombre de la columna en la tabla emp.

cqlsh:tp> drop index name;

Eliminar un índice usando la API de Java

Puede soltar un índice de una tabla usando el método execute () de la clase Session. Siga los pasos que se indican a continuación para eliminar un índice de una tabla.

Paso 1: crear un objeto de clúster

Crea una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builder object. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. El siguiente código muestra cómo crear un objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear un objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session utilizando el método connect () de la clase Cluster como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“ Your keyspace name ” );

Aquí estamos usando el KeySpace llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Session session = cluster.connect(“ tp” );

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o comoStatementobjeto de clase al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En el siguiente ejemplo, descartamos un "nombre" de índice de empmesa. Debe almacenar la consulta en una variable de cadena y pasarla al método execute () como se muestra a continuación.

//Query
String query = "DROP INDEX user_name;";
session.execute(query);

A continuación se muestra el programa completo para colocar un índice en Cassandra utilizando la API de Java.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Drop_Index {

   public static void main(String args[]){
     
      //Query
      String query = "DROP INDEX user_name;";
 
      //Creating cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();.
 
      //Creating Session object
      Session session = cluster.connect("tp"); 
 
      //Executing the query
      session.execute(query);
      
      System.out.println("Index dropped");
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Drop_index.java
$java Drop_index

En condiciones normales, debería producir el siguiente resultado:

Index dropped

Usar declaraciones por lotes

Utilizando BATCH,puede ejecutar múltiples declaraciones de modificación (insertar, actualizar, eliminar) simultáneamente. Su sintaxis es la siguiente:

BEGIN BATCH
<insert-stmt>/ <update-stmt>/ <delete-stmt>
APPLY BATCH

Ejemplo

Suponga que hay una tabla en Cassandra llamada emp que tiene los siguientes datos:

emp_id emp_name emp_city emp_phone emp_sal
1 RAM Hyderabad 9848022338 50000
2 Robin Delhi 9848022339 50000
3 Rahman Chennai 9848022330 45000

En este ejemplo, realizaremos las siguientes operaciones:

  • Inserte una nueva fila con los siguientes detalles (4, rajeev, pune, 9848022331, 30000).
  • Actualice el salario del empleado con la identificación de fila 3 a 50000.
  • Elimina la ciudad del empleado con la identificación de fila 2.

Para realizar las operaciones anteriores de una sola vez, use el siguiente comando BATCH:

cqlsh:tutorialspoint> BEGIN BATCH
... INSERT INTO emp (emp_id, emp_city, emp_name, emp_phone, emp_sal) values(  4,'Pune','rajeev',9848022331, 30000);
... UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
... DELETE emp_city FROM emp WHERE emp_id = 2;
... APPLY BATCH;

Verificación

Después de hacer cambios, verifique la tabla usando la instrucción SELECT. Debería producir el siguiente resultado:

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad | ram      | 9848022338 | 50000
      2 | null      | robin    | 9848022339 | 50000
      3 | Chennai   | rahman   | 9848022330 | 50000
      4 | Pune      | rajeev   | 9848022331 | 30000
    
(4 rows)

Aquí puede observar la tabla con datos modificados.

Declaraciones por lotes utilizando la API de Java

Las sentencias por lotes se pueden escribir mediante programación en una tabla utilizando el método execute () de la clase Session. Siga los pasos que se indican a continuación para ejecutar varias declaraciones utilizando la declaración por lotes con la ayuda de la API de Java.

Paso 1: crear un objeto de clúster

Crea una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. Utilice el siguiente código para crear el objeto de clúster:

//Building a cluster
Cluster cluster = builder.build();

Puede crear el objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session utilizando el método connect () de la clase Cluster como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“ Your keyspace name ”);

Aquí estamos usando el KeySpace llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Session session = cluster.connect(“tp”);

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o como un objeto de clase Statement al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En este ejemplo, realizaremos las siguientes operaciones:

  • Inserte una nueva fila con los siguientes detalles (4, rajeev, pune, 9848022331, 30000).
  • Actualice el salario del empleado con la identificación de fila 3 a 50000.
  • Elimine la ciudad del empleado con la identificación de fila 2.

Debe almacenar la consulta en una variable de cadena y pasarla al método execute () como se muestra a continuación.

String query1 = ” BEGIN BATCH INSERT INTO emp (emp_id, emp_city, emp_name,   emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);
UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
DELETE emp_city FROM emp WHERE emp_id = 2;
APPLY BATCH;”;

A continuación se muestra el programa completo para ejecutar múltiples declaraciones simultáneamente en una tabla en Cassandra usando la API de Java.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Batch {

   public static void main(String args[]){
    
      //query
      String query =" BEGIN BATCH INSERT INTO emp (emp_id, emp_city,
         emp_name, emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);"
    
         + "UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;"
         + "DELETE emp_city FROM emp WHERE emp_id = 2;"
         + "APPLY BATCH;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
 
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //Executing the query
      session.execute(query);

      System.out.println("Changes done");
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Batch.java
$java Batch

En condiciones normales, debería producir el siguiente resultado:

Changes done

Crear datos en una tabla

Puede insertar datos en las columnas de una fila en una tabla usando el comando INSERT. A continuación se muestra la sintaxis para crear datos en una tabla.

INSERT INTO <tablename>
(<column1 name>, <column2 name>....)
VALUES (<value1>, <value2>....)
USING <option>

Ejemplo

Supongamos que hay una tabla llamada emp con columnas (emp_id, emp_name, emp_city, emp_phone, emp_sal) y debe insertar los siguientes datos en el emp mesa.

emp_id emp_name emp_city emp_phone emp_sal
1 RAM Hyderabad 9848022338 50000
2 Robin Hyderabad 9848022339 40000
3 Rahman Chennai 9848022330 45000

Utilice los comandos que se indican a continuación para completar la tabla con los datos necesarios.

cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);

cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);

cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(3,'rahman', 'Chennai', 9848022330, 45000);

Verificación

Después de insertar datos, use la instrucción SELECT para verificar si los datos se han insertado o no. Si verifica la tabla emp usando la instrucción SELECT, le dará la siguiente salida.

cqlsh:tutorialspoint> SELECT * FROM emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 | Hyderabad |    robin | 9848022339 | 40000
      3 |   Chennai |   rahman | 9848022330 | 45000
 
(3 rows)

Aquí puede observar que la tabla se ha llenado con los datos que insertamos.

Crear datos usando la API de Java

Puede crear datos en una tabla usando el método execute () de la clase Session. Siga los pasos que se indican a continuación para crear datos en una tabla usando la API de Java.

Paso 1: crear un objeto de clúster

Crea una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint("127.0.0.1");

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. El siguiente código muestra cómo crear un objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear un objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session utilizando el método connect () de la clase Cluster como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“ Your keyspace name ” );

Aquí estamos usando el KeySpace llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Session session = cluster.connect(“ tp” );

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o comoStatementobjeto de clase al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En el siguiente ejemplo, estamos insertando datos en una tabla llamada emp. Debe almacenar la consulta en una variable de cadena y pasarla al método execute () como se muestra a continuación.

String query1 = “INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)
   VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);” ;
 
String query2 = “INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)
   VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);” ;
 
String query3 = “INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)
   VALUES(3,'rahman', 'Chennai', 9848022330, 45000);” ;
 
session.execute(query1);
session.execute(query2);
session.execute(query3);

A continuación se muestra el programa completo para insertar datos en una tabla en Cassandra usando la API de Java.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_Data {

   public static void main(String args[]){

      //queries
      String query1 = "INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone,  emp_sal)"
		
         + " VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);" ;
                             
      String query2 = "INSERT INTO emp (emp_id, emp_name, emp_city,
         emp_phone, emp_sal)"
      
         + " VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);" ;
                             
      String query3 = "INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)"
       
         + " VALUES(3,'rahman', 'Chennai', 9848022330, 45000);" ;

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
 
      //Creating Session object
      Session session = cluster.connect("tp");
       
      //Executing the query
      session.execute(query1);
        
      session.execute(query2);
        
      session.execute(query3);
        
      System.out.println("Data created");
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Create_Data.java
$java Create_Data

En condiciones normales, debería producir el siguiente resultado:

Data created

Actualizar datos en una tabla

UPDATEes el comando utilizado para actualizar datos en una tabla. Las siguientes palabras clave se utilizan al actualizar datos en una tabla:

  • Where - Esta cláusula se utiliza para seleccionar la fila a actualizar.

  • Set - Establezca el valor con esta palabra clave.

  • Must - Incluye todas las columnas que componen la clave primaria.

Al actualizar filas, si una fila determinada no está disponible, ACTUALIZAR crea una nueva fila. A continuación se muestra la sintaxis del comando UPDATE:

UPDATE <tablename>
SET <column name> = <new value>
<column name> = <value>....
WHERE <condition>

Ejemplo

Suponga que hay una tabla llamada emp. Esta tabla almacena los detalles de los empleados de una determinada empresa y tiene los siguientes detalles:

emp_id emp_name emp_city emp_phone emp_sal
1 RAM Hyderabad 9848022338 50000
2 Robin Hyderabad 9848022339 40000
3 Rahman Chennai 9848022330 45000

Actualicemos ahora emp_city de robin a Delhi, y su salario a 50000. A continuación se muestra la consulta para realizar las actualizaciones necesarias.

cqlsh:tutorialspoint> UPDATE emp SET emp_city='Delhi',emp_sal=50000
   WHERE emp_id=2;

Verificación

Utilice la instrucción SELECT para verificar si los datos se han actualizado o no. Si verifica la tabla emp usando la instrucción SELECT, producirá la siguiente salida.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 45000
      
(3 rows)

Aquí puede observar que los datos de la tabla se han actualizado.

Actualización de datos mediante la API de Java

Puede actualizar datos en una tabla usando el método execute () de la clase Session. Siga los pasos que se indican a continuación para actualizar los datos en una tabla usando la API de Java.

Paso 1: crear un objeto de clúster

Crea una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint("127.0.0.1");

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. Utilice el siguiente código para crear el objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear el objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session utilizando el método connect () de la clase Cluster como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“ Your keyspace name”);

Aquí estamos usando el KeySpace llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Session session = cluster.connect(“tp”);

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o como un objeto de clase Statement al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En el siguiente ejemplo, estamos actualizando la tabla emp. Debe almacenar la consulta en una variable de cadena y pasarla al método execute () como se muestra a continuación:

String query = “ UPDATE emp SET emp_city='Delhi',emp_sal=50000
WHERE emp_id = 2;” ;

A continuación se muestra el programa completo para actualizar datos en una tabla usando la API de Java.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Update_Data {
  
   public static void main(String args[]){
      
      //query
      String query = " UPDATE emp SET emp_city='Delhi',emp_sal=50000"
          
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
         
      //Creating Session object
      Session session = cluster.connect("tp");
         
      //Executing the query
      session.execute(query);

      System.out.println("Data updated");
   }
 }

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Update_Data.java
$java Update_Data

En condiciones normales, debería producir el siguiente resultado:

Data updated

Leer datos usando la cláusula de selección

La cláusula SELECT se usa para leer datos de una tabla en Cassandra. Con esta cláusula, puede leer una tabla completa, una sola columna o una celda en particular. A continuación se muestra la sintaxis de la cláusula SELECT.

SELECT FROM <tablename>

Ejemplo

Suponga que hay una tabla en el espacio de teclas llamado emp con los siguientes detalles -

emp_id emp_name emp_city emp_phone emp_sal
1 RAM Hyderabad 9848022338 50000
2 Robin nulo 9848022339 50000
3 Rahman Chennai 9848022330 50000
4 rajeev Pune 9848022331 30000

El siguiente ejemplo muestra cómo leer una tabla completa usando la cláusula SELECT. Aquí estamos leyendo una tabla llamadaemp.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | null      |   robin  | 9848022339 | 50000
      3 | Chennai   |   rahman | 9848022330 | 50000
      4 | Pune      |   rajeev | 9848022331 | 30000
		
(4 rows)

Lectura de columnas obligatorias

El siguiente ejemplo muestra cómo leer una columna en particular en una tabla.

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

 emp_name | emp_sal
----------+---------
      ram | 50000
    robin | 50000
   rajeev | 30000
   rahman | 50000 
	
(4 rows)

Dónde cláusula

Usando la cláusula WHERE, puede poner una restricción en las columnas requeridas. Su sintaxis es la siguiente:

SELECT FROM <table name> WHERE <condition>;

Note - Una cláusula WHERE se puede utilizar solo en las columnas que forman parte de la clave principal o que tienen un índice secundario.

En el siguiente ejemplo, estamos leyendo los detalles de un empleado cuyo salario es 50000. En primer lugar, establezca el índice secundario en la columna emp_sal.

cqlsh:tutorialspoint> CREATE INDEX ON emp(emp_sal);
cqlsh:tutorialspoint> SELECT * FROM emp WHERE emp_sal=50000;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |      null |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 50000

Leer datos usando la API de Java

Puede leer datos de una tabla usando el método execute () de la clase Session. Siga los pasos que se indican a continuación para ejecutar varias declaraciones utilizando la declaración por lotes con la ayuda de la API de Java.

Paso 1: crear un objeto de clúster

Crea una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. Utilice el siguiente código para crear el objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear el objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session utilizando el método connect () de la clase Cluster como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“Your keyspace name”);

Aquí estamos usando el KeySpace llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Session session = cluster.connect(“tp”);

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o como un objeto de clase Statement al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En este ejemplo, estamos recuperando los datos de empmesa. Almacene la consulta en una cadena y páselo al método execute () de la clase de sesión como se muestra a continuación.

String query = ”SELECT 8 FROM emp”;
session.execute(query);

Ejecute la consulta usando el método execute () de la clase Session.

Paso 4: Obtenga el objeto ResultSet

Las consultas seleccionadas devolverán el resultado en forma de ResultSet objeto, por lo tanto, almacene el resultado en el objeto de RESULTSET clase como se muestra a continuación.

ResultSet result = session.execute( );

A continuación se muestra el programa completo para leer datos de una tabla.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;

public class Read_Data {

   public static void main(String args[])throws Exception{
    
      //queries
      String query = "SELECT * FROM emp";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tutorialspoint");
    
      //Getting the ResultSet
      ResultSet result = session.execute(query);
    
      System.out.println(result.all());
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Read_Data.java
$java Read_Data

En condiciones normales, debería producir el siguiente resultado:

[Row[1, Hyderabad, ram, 9848022338, 50000], Row[2, Delhi, robin,
9848022339, 50000], Row[4, Pune, rajeev, 9848022331, 30000], Row[3,
Chennai, rahman, 9848022330, 50000]]

Leer datos usando la cláusula de selección

La cláusula SELECT se usa para leer datos de una tabla en Cassandra. Con esta cláusula, puede leer una tabla completa, una sola columna o una celda en particular. A continuación se muestra la sintaxis de la cláusula SELECT.

SELECT FROM <tablename>

Ejemplo

Suponga que hay una tabla en el espacio de teclas llamado emp con los siguientes detalles -

emp_id emp_name emp_city emp_phone emp_sal
1 RAM Hyderabad 9848022338 50000
2 Robin nulo 9848022339 50000
3 Rahman Chennai 9848022330 50000
4 rajeev Pune 9848022331 30000

El siguiente ejemplo muestra cómo leer una tabla completa usando la cláusula SELECT. Aquí estamos leyendo una tabla llamadaemp.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | null      |   robin  | 9848022339 | 50000
      3 | Chennai   |   rahman | 9848022330 | 50000
      4 | Pune      |   rajeev | 9848022331 | 30000
		
(4 rows)

Lectura de columnas obligatorias

El siguiente ejemplo muestra cómo leer una columna en particular en una tabla.

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

 emp_name | emp_sal
----------+---------
      ram | 50000
    robin | 50000
   rajeev | 30000
   rahman | 50000 
	
(4 rows)

Dónde cláusula

Usando la cláusula WHERE, puede poner una restricción en las columnas requeridas. Su sintaxis es la siguiente:

SELECT FROM <table name> WHERE <condition>;

Note - Una cláusula WHERE se puede utilizar solo en las columnas que forman parte de la clave principal o que tienen un índice secundario.

En el siguiente ejemplo, estamos leyendo los detalles de un empleado cuyo salario es 50000. En primer lugar, establezca el índice secundario en la columna emp_sal.

cqlsh:tutorialspoint> CREATE INDEX ON emp(emp_sal);
cqlsh:tutorialspoint> SELECT * FROM emp WHERE emp_sal=50000;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |      null |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 50000

Leer datos usando la API de Java

Puede leer datos de una tabla usando el método execute () de la clase Session. Siga los pasos que se indican a continuación para ejecutar varias declaraciones utilizando la declaración por lotes con la ayuda de la API de Java.

Paso 1: crear un objeto de clúster

Crea una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. Utilice el siguiente código para crear el objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear el objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session utilizando el método connect () de la clase Cluster como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“Your keyspace name”);

Aquí estamos usando el KeySpace llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Session session = cluster.connect(“tp”);

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o como un objeto de clase Statement al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En este ejemplo, estamos recuperando los datos de empmesa. Almacene la consulta en una cadena y páselo al método execute () de la clase de sesión como se muestra a continuación.

String query = ”SELECT 8 FROM emp”;
session.execute(query);

Ejecute la consulta usando el método execute () de la clase Session.

Paso 4: Obtenga el objeto ResultSet

Las consultas seleccionadas devolverán el resultado en forma de ResultSet objeto, por lo tanto, almacene el resultado en el objeto de RESULTSET clase como se muestra a continuación.

ResultSet result = session.execute( );

A continuación se muestra el programa completo para leer datos de una tabla.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;

public class Read_Data {

   public static void main(String args[])throws Exception{
    
      //queries
      String query = "SELECT * FROM emp";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tutorialspoint");
    
      //Getting the ResultSet
      ResultSet result = session.execute(query);
    
      System.out.println(result.all());
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Read_Data.java
$java Read_Data

En condiciones normales, debería producir el siguiente resultado:

[Row[1, Hyderabad, ram, 9848022338, 50000], Row[2, Delhi, robin,
9848022339, 50000], Row[4, Pune, rajeev, 9848022331, 30000], Row[3,
Chennai, rahman, 9848022330, 50000]]

Eliminar datos de una tabla

Puede eliminar datos de una tabla usando el comando DELETE. Su sintaxis es la siguiente:

DELETE FROM <identifier> WHERE <condition>;

Ejemplo

Supongamos que hay una mesa en Cassandra llamada emp teniendo los siguientes datos -

emp_id emp_name emp_city emp_phone emp_sal
1 RAM Hyderabad 9848022338 50000
2 Robin Hyderabad 9848022339 40000
3 Rahman Chennai 9848022330 45000

La siguiente declaración elimina la columna emp_sal de la última fila:

cqlsh:tutorialspoint> DELETE emp_sal FROM emp WHERE emp_id=3;

Verificación

Utilice la instrucción SELECT para verificar si los datos se han eliminado o no. Si verifica la tabla emp usando SELECT, producirá la siguiente salida:

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | null
(3 rows)

Dado que hemos eliminado el salario de Rahman, observará un valor nulo en lugar del salario.

Eliminar una fila completa

El siguiente comando elimina una fila completa de una tabla.

cqlsh:tutorialspoint> DELETE FROM emp WHERE emp_id=3;

Verificación

Utilice la instrucción SELECT para verificar si los datos se han eliminado o no. Si verifica la tabla emp usando SELECT, producirá la siguiente salida:

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
 
(2 rows)

Como hemos eliminado la última fila, solo quedan dos filas en la tabla.

Eliminar datos mediante la API de Java

Puede eliminar datos en una tabla usando el método execute () de la clase Session. Siga los pasos que se indican a continuación para eliminar datos de una tabla usando la API de Java.

Paso 1: crear un objeto de clúster

Crea una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. Utilice el siguiente código para crear un objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear el objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session utilizando el método connect () de la clase Cluster como se muestra a continuación.

Session session = cluster.connect();

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“ Your keyspace name ”);

Aquí estamos usando el KeySpace llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Session session = cluster.connect(“tp”);

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o como un objeto de clase Statement al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En el siguiente ejemplo, estamos eliminando datos de una tabla llamada emp. Tienes que almacenar la consulta en una variable de cadena y pasarla al execute() método como se muestra a continuación.

String query1 = ”DELETE FROM emp WHERE emp_id=3; ”;
session.execute(query);

A continuación se muestra el programa completo para eliminar datos de una tabla en Cassandra usando la API de Java.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Delete_Data {

   public static void main(String args[]){
   
      //query
      String query = "DELETE FROM emp WHERE emp_id=3;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
       
      //Creating Session object
      Session session = cluster.connect("tp");
       
      //Executing the query
      session.execute(query);
       
      System.out.println("Data deleted");
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Delete_Data.java
$java Delete_Data

En condiciones normales, debería producir el siguiente resultado:

Data deleted

CQL proporciona un amplio conjunto de tipos de datos integrados, incluidos los tipos de recopilación. Junto con estos tipos de datos, los usuarios también pueden crear sus propios tipos de datos personalizados. La siguiente tabla proporciona una lista de tipos de datos integrados disponibles en CQL.

Tipo de datos Constantes Descripción
ascii instrumentos de cuerda Representa una cadena de caracteres ASCII
Empezando Empezando Representa 64 bits con firma larga
blob manchas Representa bytes arbitrarios
Booleano booleanos Representa verdadero o falso
counter enteros Representa la columna del contador
decimal enteros, flotantes Representa decimal de precisión variable
doble enteros Representa punto flotante IEEE-754 de 64 bits
flotador enteros, flotantes Representa punto flotante IEEE-754 de 32 bits
inet instrumentos de cuerda Representa una dirección IP, IPv4 o IPv6
En t enteros Representa un int firmado de 32 bits
texto instrumentos de cuerda Representa una cadena codificada en UTF8
timestamp enteros, cadenas Representa una marca de tiempo
timeuuid uuids Representa el UUID de tipo 1
uuid uuids Representa el tipo 1 o el tipo 4
UUID
varchar instrumentos de cuerda Representa una cadena codificada en uTF8
varint enteros Representa un entero de precisión arbitraria

Tipos de colección

Cassandra Query Language también proporciona una colección de tipos de datos. La siguiente tabla proporciona una lista de colecciones disponibles en CQL.

Colección Descripción
lista Una lista es una colección de uno o más elementos ordenados.
mapa Un mapa es una colección de pares clave-valor.
conjunto Un conjunto es una colección de uno o más elementos.

Tipos de datos definidos por el usuario

Cqlsh ofrece a los usuarios la posibilidad de crear sus propios tipos de datos. A continuación se muestran los comandos que se utilizan al tratar con tipos de datos definidos por el usuario.

  • CREATE TYPE - Crea un tipo de datos definido por el usuario.

  • ALTER TYPE - Modifica un tipo de datos definido por el usuario.

  • DROP TYPE - Elimina un tipo de datos definido por el usuario.

  • DESCRIBE TYPE : Describe un tipo de datos definido por el usuario.

  • DESCRIBE TYPES - Describe tipos de datos definidos por el usuario.

CQL ofrece la posibilidad de utilizar tipos de datos de colección. Con estos tipos de colección, puede almacenar varios valores en una sola variable. Este capítulo explica cómo usar Colecciones en Cassandra.

Lista

La lista se utiliza en los casos en que

  • el orden de los elementos debe mantenerse, y
  • un valor debe almacenarse varias veces.

Puede obtener los valores de un tipo de datos de lista utilizando el índice de los elementos de la lista.

Crear una tabla con una lista

A continuación se muestra un ejemplo para crear una tabla de muestra con dos columnas, nombre y correo electrónico. Para almacenar varios correos electrónicos, estamos usando list.

cqlsh:tutorialspoint> CREATE TABLE data(name text PRIMARY KEY, email list<text>);

Insertar datos en una lista

Al insertar datos en los elementos de una lista, ingrese todos los valores separados por comas entre llaves [] como se muestra a continuación.

cqlsh:tutorialspoint> INSERT INTO data(name, email) VALUES ('ramu',
['[email protected]','[email protected]'])

Actualizar una lista

A continuación se muestra un ejemplo para actualizar el tipo de datos de la lista en una tabla llamada data. Aquí estamos agregando otro correo electrónico a la lista.

cqlsh:tutorialspoint> UPDATE data
... SET email = email +['[email protected]']
... where name = 'ramu';

Verificación

Si verifica la tabla usando la instrucción SELECT, obtendrá el siguiente resultado:

cqlsh:tutorialspoint> SELECT * FROM data;

 name | email
------+--------------------------------------------------------------
 ramu | ['[email protected]', '[email protected]', '[email protected]']

(1 rows)

CONJUNTO

Set es un tipo de datos que se utiliza para almacenar un grupo de elementos. Los elementos de un conjunto se devolverán en orden.

Crear una mesa con set

El siguiente ejemplo crea una tabla de muestra con dos columnas, nombre y teléfono. Para almacenar varios números de teléfono, usamos set.

cqlsh:tutorialspoint> CREATE TABLE data2 (name text PRIMARY KEY, phone set<varint>);

Insertar datos en un conjunto

Al insertar datos en los elementos de un conjunto, ingrese todos los valores separados por comas entre llaves {} como se muestra a continuación.

cqlsh:tutorialspoint> INSERT INTO data2(name, phone)VALUES ('rahman',    {9848022338,9848022339});

Actualizar un conjunto

El siguiente código muestra cómo actualizar un conjunto en una tabla denominada data2. Aquí estamos agregando otro número de teléfono al conjunto.

cqlsh:tutorialspoint> UPDATE data2
   ... SET phone = phone + {9848022330}
   ... where name = 'rahman';

Verificación

Si verifica la tabla usando la instrucción SELECT, obtendrá el siguiente resultado:

cqlsh:tutorialspoint> SELECT * FROM data2;

   name | phone
--------+--------------------------------------
 rahman | {9848022330, 9848022338, 9848022339}

(1 rows)

MAPA

Map es un tipo de datos que se utiliza para almacenar un par de elementos clave-valor.

Crear una tabla con mapa

El siguiente ejemplo muestra cómo crear una tabla de muestra con dos columnas, nombre y dirección. Para almacenar múltiples valores de dirección, usamos map.

cqlsh:tutorialspoint> CREATE TABLE data3 (name text PRIMARY KEY, address
map<timestamp, text>);

Insertar datos en un mapa

Al insertar datos en los elementos de un mapa, ingrese todos los key : value pares separados por comas entre llaves {} como se muestra a continuación.

cqlsh:tutorialspoint> INSERT INTO data3 (name, address)
   VALUES ('robin', {'home' : 'hyderabad' , 'office' : 'Delhi' } );

Actualizar un conjunto

El siguiente código muestra cómo actualizar el tipo de datos del mapa en una tabla denominada data3. Aquí estamos cambiando el valor de la oficina clave, es decir, estamos cambiando la dirección de la oficina de una persona llamada robin.

cqlsh:tutorialspoint> UPDATE data3
   ... SET address = address+{'office':'mumbai'}
   ... WHERE name = 'robin';

Verificación

Si verifica la tabla usando la instrucción SELECT, obtendrá el siguiente resultado:

cqlsh:tutorialspoint> select * from data3;

  name | address
-------+-------------------------------------------
 robin | {'home': 'hyderabad', 'office': 'mumbai'}

(1 rows)

CQL ofrece la posibilidad de crear y utilizar tipos de datos definidos por el usuario. Puede crear un tipo de datos para manejar varios campos. Este capítulo explica cómo crear, modificar y eliminar un tipo de datos definido por el usuario.

Creación de un tipo de datos definido por el usuario

El comando CREATE TYPEse utiliza para crear un tipo de datos definido por el usuario. Su sintaxis es la siguiente:

CREATE TYPE <keyspace name>. <data typename>
( variable1, variable2).

Ejemplo

A continuación se muestra un ejemplo para crear un tipo de datos definido por el usuario. En este ejemplo, estamos creando uncard_details tipo de datos que contiene los siguientes detalles.

Campo Nombre del campo Tipo de datos
numero de tarjeta de credito num En t
pin de tarjeta de crédito alfiler En t
nombre en la tarjeta de crédito nombre texto
cvv cvv En t
Datos de contacto del titular de la tarjeta teléfono conjunto
cqlsh:tutorialspoint> CREATE TYPE card_details (
   ... num int,
   ... pin int,
   ... name text,
   ... cvv int,
   ... phone set<int>
... );

Note - El nombre utilizado para el tipo de datos definido por el usuario no debe coincidir con los nombres de los tipos reservados.

Verificación

Utilizar el DESCRIBE comando para verificar si el tipo creado ha sido creado o no.

CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>
   );

Modificación de un tipo de datos definido por el usuario

ALTER TYPE- El comando se usa para alterar un tipo de datos existente. Con ALTER, puede agregar un nuevo campo o cambiar el nombre de un campo existente.

Agregar un campo a un tipo

Utilice la siguiente sintaxis para agregar un nuevo campo a un tipo de datos existente definido por el usuario.

ALTER TYPE typename
ADD field_name field_type;

El siguiente código agrega un nuevo campo al Card_detailstipo de datos. Aquí estamos agregando un nuevo campo llamado correo electrónico.

cqlsh:tutorialspoint> ALTER TYPE card_details ADD email text;

Verificación

Utilizar el DESCRIBE comando para verificar si el nuevo campo se agrega o no.

cqlsh:tutorialspoint> describe type card_details;
CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   );

Cambiar el nombre de un campo en un tipo

Utilice la siguiente sintaxis para cambiar el nombre de un tipo de datos definido por el usuario existente.

ALTER TYPE typename
RENAME existing_name TO new_name;

El siguiente código cambia el nombre del campo en un tipo. Aquí estamos cambiando el nombre del campo de correo electrónico a correo.

cqlsh:tutorialspoint> ALTER TYPE card_details RENAME email TO mail;

Verificación

Utilizar el DESCRIBE comando para verificar si el nombre del tipo cambió o no.

cqlsh:tutorialspoint> describe type card_details;
CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   mail text
   );

Eliminar un tipo de datos definido por el usuario

DROP TYPEes el comando utilizado para eliminar un tipo de datos definido por el usuario. A continuación se muestra un ejemplo para eliminar un tipo de datos definido por el usuario.

Ejemplo

Antes de eliminar, verifique la lista de todos los tipos de datos definidos por el usuario usando DESCRIBE_TYPES comando como se muestra a continuación.

cqlsh:tutorialspoint> DESCRIBE TYPES;
card_details card

De los dos tipos, elimine el tipo denominado card Como se muestra abajo.

cqlsh:tutorialspoint> drop type card;

Utilizar el DESCRIBE comando para verificar si el tipo de datos se eliminó o no.

cqlsh:tutorialspoint> describe types;

card_details