🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

Tema 7 Métodos de Captura y Almacenamiento de los Datos Cassandra © Universidad Internacional de La Rioja (UNIR) Índice Esquema 3 Ideas clave 4 7.1. Introducción y objetivos 4 7.2. Descarga e instalación 6 7.3. Conceptos generales 8 7.4. Modelo de datos y relaciones 11 7.5. CQL3 15 7.6. TTL y WriteT...

Tema 7 Métodos de Captura y Almacenamiento de los Datos Cassandra © Universidad Internacional de La Rioja (UNIR) Índice Esquema 3 Ideas clave 4 7.1. Introducción y objetivos 4 7.2. Descarga e instalación 6 7.3. Conceptos generales 8 7.4. Modelo de datos y relaciones 11 7.5. CQL3 15 7.6. TTL y WriteTime 24 7.7. Índices 25 7.8. Ejercicio práctico: instalación con Docker 26 7.9. Referencias bibliográficas 32 A fondo 33 Test 35 Conocer los principales componentes de Cassandra y describir el sistema de replicación, la lógica de las operaciones de escritura y las de lectura. Cómo aplica el teorema CAP Modelo de datos: - Los patrones de acceso a los datos y las consultas de la aplicación determinan la estructura y organización de los datos que luego se utilizan para diseñar las tablas de la base de datos. - Cada consulta está respaldada por una tabla y, por ello, los datos se duplican en varias tablas en un proceso conocido como desnormalización. - La duplicación de datos y un alto rendimiento de escritura se utilizan para lograr un alto rendimiento de lectura. Arquitectura: - Cassandra está diseñada para trabajar en entornos big data sobre múltiples nodos evitando puntos de fallo. - Dispone de un sistema distribuido de igual a igual en todos sus nodos donde los datos se distribuyen entre todo el clúster. - Los nodos de un clúster pueden aceptar solicitudes de lectura y escritura, independientemente de dónde se encuentren realmente los datos en dicho clúster. - Si un nodo falla, las solicitudes de lectura/escritura pasan a ser atendidas por otros nodos de la red. Cassandra es un producto de Apache y su sistema de almacenamiento o motor de base de datos es de código abierto, distribuido y descentralizado. Su fin principal es gestionar grandes volúmenes de datos estructurados repartidos por distintos servidores. Base de datos NoSQL de tipo clave-valor Generalidades Apache Cassandra Definición © Universidad Internacional de La Rioja (UNIR) Contadores. Uso de timestamp. Uso de date. Definir duraciones. Colecciones: maps, set y list. Tuplas. UDT. Operaciones de INSERT, UPDATE, DELETE. WriteTime. Índices. Instalación sobre Linux y Windows TTL. Otras funcionalidades Tipos de datos. Manipulación de datos Keyspaces, tablas y columnas CQL3 Esquema Métodos de Captura y Almacenamiento de los Datos Tema 7. Esquema 3 Ideas clave 7.1. Introducción y objetivos Este tema es totalmente práctico y se enfoca en el uso básico de la base de datos Cassandra, dentro del ámbito de NoSQL. Se describen los principales pasos de su instalación, una sección dedicada a conceptos generales, una sección que habla sobre el modelado de datos en esta base de datos y el resto de los temas se enfocará en aprender a configurar y manipular la base de datos. Al tratarse de un tema con un enfoque práctico, la mejor forma de estudiarlo es llevando a cabo la instalación de la base de datos en un entorno local para pruebas. Para ello, se recomienda que se estudien inicialmente los apartados 7.2 y 7.8. Una vez instalada Cassandra en local, el estudiante podrá continuar con los apartados siguientes, según el orden propuesto y las indicaciones o sugerencias que brinde el profesor a lo largo de la asignatura. Apache Cassandra es una base de datos NoSQL caracterizada por ser distribuida, altamente escalable y con un alto rendimiento. Su diseño y arquitectura distribuida le permiten manejar grandes volúmenes de datos sobre varios servidores, proporcionando así una alta disponibilidad con el mínimo número de fallos. Para lograr la alta disponibilidad, los datos se colocan en diferentes máquinas con más de © Universidad Internacional de La Rioja (UNIR) un factor de replicación determinado. Cassandra es un producto de Apache y su sistema de almacenamiento o motor de base de datos es de código abierto, distribuido y descentralizado. Su fin principal es gestionar grandes volúmenes de datos estructurados, repartidos por distintos servidores. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 4 ¿Qué se puede destacar de Cassandra?  Es una base de datos orientada a columnas.  Es escalable, consistente y tolerante a fallas.  El diseño de distribución de Cassandra se basa en Dynamo de Amazon y su modelo de datos en Bigtable de Google.  Se puede decir que Facebook es el creador de Cassandra.  Como motor de base de datos, es totalmente diferente de los sistemas de administración de bases de datos relacionales.  El modelo de replicación es del estilo de Dynamo y el concepto de modelo de datos «familia de columnas» es el más robusto.  ¿Se usa? Sí. Algunas de las empresas más grandes como Facebook, Twitter, Cisco, Rackspace, eBay, Twitter y Netflix, entre otros, lo emplean dentro de sus arquitecturas. Los objetivos que se abordan en este tema son los siguientes:  Entender los conceptos generales que caracterizan a Cassandra.  Conocer la arquitectura básica de esta base de datos NoSQL y los elementos que la componen.  Aprender a usar los principales tipos de datos, incluidos los tipos de datos © Universidad Internacional de La Rioja (UNIR) definidos por el usuario.  Entender el uso de las colecciones set, list y map.  Poner en práctica la instalación de esta base de datos en un entorno de pruebas. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 5 7.2. Descarga e instalación La instalación propuesta se hará sobre distribuciones de Linux Debian o Ubuntu. Para descargar los ficheros de instalación correspondientes, ten en cuenta que:  Para se debe especificar el número de versión principal sin punto y con una x.  La última , a fecha de noviembre de 2020, es la 311x.  Para versiones anteriores, el puede ser uno de 30x, 22x o 21x.  Agrega el repositorio Apache de Cassandra /etc/apt/sources.list.d/cassandra. sources.list, por ejemplo, para la versión 3.11: $ echo "deb https://downloads.apache.org/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list  Agrega las claves del repositorio de Apache Cassandra y, acto seguido, actualiza los repositorios: $ curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add – $ sudo apt-get update  Agrega la clave pública correspondiente y vuelva a actualizar los repositorios de la siguiente manera: $ sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-key © Universidad Internacional de La Rioja (UNIR) A278B781FE4B2BDA $ sudo apt-get update La clave pública puede ser diferente, es posible obtenerla o bien del mensaje de error o bien a través de la lista completa de claves públicas de los contribuyentes de Apache, visita la siguiente URL: https://downloads.apache.org/cassandra/KEYS. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 6  Instala ahora Cassandra desde la consola: $ sudo apt-get install cassandra Ten en cuenta que para iniciar el servicio o demonio de Cassandra, puedes utilizar la instrucción sudo service cassandra start. Para detenerlo, sudo service cassandra stop. Después de la instalación, el demonio se iniciará automáticamente. Si necesitas hacer algún cambio en la configuración de la base de datos, asegúrate de detenerlo antes para que los cambios se apliquen correctamente. Comprueba que Cassandra se está ejecutando utilizando el comando nodetool status desde la línea de comando. Para iniciar la consola cqlsh, simplemente escribe este mismo comando: $ cqlsh Directorios de instalación:  /etc/cassandra: ubicación predeterminada de los archivos de configuración.  /var/log/cassandra/ y /var/lib/cassandra: ubicación predeterminada de los directorios de datos y registros respectivamente.  /etc/default/cassandra: aquí se encuentran las opciones de inicio que se pueden configurar. El código fuente de Cassandra está disponible en Git, consulta la URL: © Universidad Internacional de La Rioja (UNIR) https://gitbox.apache.org/repos/asf/cassandra.git. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 7 7.3. Conceptos generales En el año 2008 Cassandra fue desarrollada en Facebook, surgió como una mezcla del almacén de datos BigTable utilizado por Google y el almacén de datos Dynamo utilizado por Amazon (Carpenter y Hewitt, 2020). Su creador fue Avinash Lakshman, autor también de Amazon Dynamo, y Prashant Malik (Carpenter y Hewitt, 2020; Neeraj, 2013). Con esta base de datos se quería resolver el problema de búsqueda en la bandeja de entrada de Facebook. Actualmente ha evolucionado mucho y su uso se extiende notablemente. Las características principales de Cassandra son:  Cassandra es una base de datos de tipo clave-valor.  Los datos se almacenan como tablas y columnas.  Cada tabla tiene una clave principal.  Aunque permite lecturas y escrituras muy rápidas, tiene una interfaz SQL limitada debido a su propia estructura. Arquitectura Como se mencionó anteriormente, Cassandra se diseñó para trabajar en entornos big data sobre múltiples nodos, evitando puntos de fallo por caídas de servidores o © Universidad Internacional de La Rioja (UNIR) nodos. Esta característica la consigue porque cuenta con un sistema distribuido de igual a igual en todos sus nodos, donde los datos se distribuyen entre todo el clúster (Neeraj, 2013). Aunque cada nodo es independiente, al mismo tiempo está interconectado con otros nodos, desempeñando el mismo papel que los demás (Kan, 2014). Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 8 Figura 1. Modelo de referencia arquitectura Apache Cassandra. Los nodos de un clúster pueden aceptar solicitudes de lectura y escritura, independientemente de dónde se encuentren realmente los datos en dicho clúster. Si un nodo falla, las solicitudes de lectura y escritura pasan a ser atendidas por otros nodos de la red (Kan, 2014). Los principales componentes de Cassandra son:  Nodo: un lugar donde se almacenan los datos.  Centro de datos: es una colección de nodos relacionados.  Clúster: es un componente que contiene uno o más centros de datos.  Registro de confirmación: mecanismo de recuperación de fallos. Todas las operaciones de escritura se escriben en este registro de confirmación.  Mem-table: es una estructura de datos residente en memoria. Después del © Universidad Internacional de La Rioja (UNIR) registro de confirmación, los datos pasan a la tabla en memoria. Es normal que para una familia de una sola columna existan varias mem-tables.  SSTable: archivo de disco al que se vacían los datos de la tabla de memoria, cuando su contenido alcanza un valor umbral.  Filtro Bloom: conjunto de algoritmos no deterministas muy rápidos, utilizados para probar si un elemento es miembro de un conjunto. Comprende el uso de tipo especial de caché al que se accede después de cada consulta. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 9 Sistema de replicación Los nodos de un clúster en Cassandra actúan como réplicas de un dato específico. Si la respuesta a algún nodo incluye un valor desactualizado, Cassandra se encargará de devolver al usuario el valor más reciente. Después de atender al usuario, Cassandra repara la lectura en segundo plano para actualizar los valores que se encontraron obsoletos. Operaciones de escritura Los registros de confirmación que residen en los nodos capturan toda actividad de escritura de los mismos nodos. El objetivo es que dichos datos sean almacenados en la tabla de memorias siempre que esta esté libre. En el caso de que la tabla de memorias esté llena, los datos se escribirán en el archivo de datos SStable. La partición y replicación de todas las escrituras se lleva a cabo de forma automática en todo el clúster. La consolidación de las SSTables se realiza periódicamente, descartando los datos considerados como innecesarios. Operaciones de lectura Para leer los datos, Cassandra consulta los valores de la tabla de memorias y establece la forma de ubicar la tabla SST que contenga los datos solicitados. Las operaciones de lectura se tipifican en solicitudes directas, de resumen y de reparación antes de ser delegadas a los coordinadores, para que las envíen a las © Universidad Internacional de La Rioja (UNIR) réplicas correspondientes. El primer paso es enviar una solicitud directa a una de las réplicas. Luego, el coordinador envía la solicitud de resumen a la cantidad de réplicas especificadas para garantizar el nivel de coherencia y, finalmente, comprueba que los datos devueltos están actualizados. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 10 Por último, el coordinador envía la solicitud de resumen a todas las réplicas restantes. En el caso de que algún nodo devuelva un valor desactualizado, la solicitud de reparación de lectura en segundo plano actualizará dichos valores. Lenguaje de consulta en Cassandra Es necesario conocer también Cassandra Query Language (CQL), el lenguaje de consulta utilizado para acceder a Cassandra a través de sus nodos. La principal característica del lenguaje es que CQL utiliza la base de datos como un contenedor de tablas, las cuales representan espacio de claves. Los programadores pueden utilizar cqlsh en modo consola para trabajar con CQL o emplear controladores de otras aplicaciones independientes. 7.4. Modelo de datos y relaciones El modelado de datos es el proceso de identificar entidades y sus relaciones. En los sistemas relacionales, los datos se almacenan en tablas normalizadas con claves externas que se utilizan para hacer referencia a los relacionados entre tablas (Sharma, 2014). Las consultas que realizará la aplicación están controladas por la estructura de las tablas y los datos relacionados se consultan como combinaciones de dichas tablas. En Cassandra, el modelado de datos se basa en consultas. Los patrones de acceso a © Universidad Internacional de La Rioja (UNIR) los datos y las consultas de la aplicación determinan la estructura y organización de los datos que luego se utilizan para diseñar las tablas de la base de datos. A diferencia de un modelo de base de datos relacional en el que las consultas utilizan combinaciones de tablas para obtener datos de varias tablas, las combinaciones no son compatibles con Cassandra, por lo que todos los campos obligatorios (columnas) deben agruparse en una sola tabla. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 11 Dado que cada consulta está respaldada por una tabla, los datos se duplican en varias tablas en un proceso conocido como desnormalización. La duplicación de datos y un alto rendimiento de escritura se utilizan para lograr un alto rendimiento de lectura. La elección de la clave principal y la clave de partición es importante para distribuir los datos de manera uniforme en todo el clúster. Mantener el número de particiones leídas para una consulta al mínimo también es importante, porque diferentes particiones podrían estar ubicadas en diferentes nodos y el coordinador necesitaría enviar una solicitud a cada nodo agregando a la solicitud la sobrecarga y la latencia. Cassandra divide los datos en los nodos de almacenamiento, utilizando una variante de hash consistente para la distribución de datos. El hash es una técnica que se utiliza para mapear datos con la que, dada una clave, una función hash genera un valor hash (o simplemente un hash) que se almacena en una tabla hash. Una clave de partición se genera a partir del primer campo de una clave primaria. Los datos divididos en tablas hash mediante claves de partición proporcionan una búsqueda rápida. Cuantas menos particiones utilizadas para una consulta, más rápido es el tiempo de respuesta de la consulta. Sabiendo lo anterior, ahora es posible conocer los componentes que describen un modelo de datos en Cassandra. Dichos componentes son espacios de claves, tablas y columnas. Espacios de claves El modelo de datos de Cassandra consta de espacios de claves al más alto nivel. Los © Universidad Internacional de La Rioja (UNIR) espacios de claves son los contenedores de datos, similares al esquema o la base de datos en una base de datos relacional. Normalmente, los espacios de claves contienen muchas tablas. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 12 Tablas Dentro de los espacios de claves, se definen o crean las tablas. Estas también se conocen como «familias de columnas» en las versiones anteriores de Cassandra. Las tablas contienen un conjunto de columnas y una clave principal, y almacenan los datos en un conjunto de filas. Columnas Las columnas definen la estructura de los datos en una tabla. Cada columna tiene un tipo asociado, como entero, texto, doble y booleano. A continuación, se muestran ejemplos de tablas en Cassandra. EJEMPLO DE CREACIÓN DE TABLAS CREATE TABLE tab1 ( CREATE TABLE tab2 ( id int, id int, age int, name text, name text, age int, PRIMARY KEY (id) dir text, ); PRIMARY KEY (id,name) ); Tabla 1. Código de ejemplo para la creación de tablas en Cassandra. En la primera columna de la tabla anterior, la clave de partición se genera a partir de la clave principal id para la distribución de datos entre los nodos de un clúster. En la © Universidad Internacional de La Rioja (UNIR) segunda columna de la tabla, se asigna una clave primaria compuesta, el primer campo id se usa para generar la clave de partición y el segundo campo name es la clave de agrupamiento usada para ordenar dentro de una partición. El uso de claves de agrupación en clústeres para ordenar datos hace que la recuperación de datos adyacentes sea más eficiente. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 13 Relaciones Cuando se quiere crear una aplicación basada en datos que utilizarán una base de datos relacional, es posible comenzar a modelar el dominio como un conjunto de tablas normalizadas correctamente y utilizar claves externas para hacer referencia a datos relacionados en otras tablas. Figura 2. Ejemplo de una base de datos relacional. Al utilizar Cassandra no es posible realizar uniones. Si tu necesidad es combinar datos, tendrás que crear una segunda tabla desnormalizada que represente los resultados de la combinación para ti. Esta es la filosofía de Cassandra, la cual, además, no aplica integridad referencial y destaca por el uso de la desnormalización de los datos. Estos son los aspectos que nos llevan a pensar en el diseño de consulta típico © Universidad Internacional de La Rioja (UNIR) en Cassandra. El diseño de la interfaz de la aplicación suele ser muy útil para comenzar a identificar consultas. Supón que has hablado con las partes interesadas del proyecto y que tus diseñadores de UX han producido diseños de interfaz de usuario o wireframes para los casos de uso clave. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 14 Algunas consultas de ejemplo podrían ser:  Q1. Busca parques cerca del hotel del cliente.  Q2. Busca información sobre una cafetería concreta de la zona.  Q3. Encuentra puntos de interés cercanos al hotel del cliente.  Q4. Encuentra un punto de información turístico de la zona.  Q5. Encuentra la disponibilidad del museo en unas fechas y horas concretas. Figura 3. Ejemplo de esquema para el diseño de consultas en Apache Cassandra. 7.5. CQL3 Como se ha visto en los apartados anteriores, los términos utilizados para referirse a la base de datos Cassandra son los mismos de SQL (tablas, filas y columnas). Para manipular los datos alojados en estos elementos, se utiliza CQL como un lenguaje sutilmente parecido a SQL. CQL3 corresponde a la versión 3 del lenguaje, el cual no es compatible con las versiones CQL1 y CQL2. © Universidad Internacional de La Rioja (UNIR) Tipos de datos CQL3 soporta los tipos de datos nativos, de colección, definidos por el usuario y personalizados. Los siguientes son algunos ejemplos de los tipos de datos nativos. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 15 Figura 4. Ejemplos de tipos de datos en Cassandra. Contadores Son tipos de columnas que funcionan como contadores, cuyas únicas operaciones permitidas son incrementar y decrementar. El valor de la columna no se establece, Cassandra se encarga de controlar su valor. Timestamp Son valores codificados como enteros de 64 bits con signo. Se ingresan usando el tipo integer o string para representar, por ejemplo, una fecha ISO 8601. Estos son ejemplos de valores válidos como timestamp:  1299038700000  '2011-02-03 04:05+0000'  '2011-02-03 04:05:00+0000' © Universidad Internacional de La Rioja (UNIR)  '2011-02-03 04:05:00.000+0000'  '2011-02-03T04:05+0000'  '2011-02-03T04:05:00+0000'  '2011-02-03T04:05:00.000+0000' Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 16 Date Al igual que los timestamp, se puede representar como integer o string. En el caso de string se debe utilizar el formato convencional yyyy-mm-dd. Para el caso de las horas, se utilizan los mismos tipos primitivos y los formatos comunes son:  '08:12:54'  '08:12:54.123'  '08:12:54.123456'  '08:12:54.123456789' Duraciones Los valores del duration se codifican como números enteros con 3 signos de longitudes variables. El primer número entero representa el número de meses, el segundo el número, de días y el tercero, el número de nanosegundos. La forma de establecer su valor es (quantity unit)+, de la forma 12h30m.  y: años (12 meses)  mo: meses (1 mes)  w: semanas (7 días)  d: días (1 día)  h: horas (3.600.000.000.000 nanosegundos)  m: minutos (60.000.000.000 nanosegundos)  s: segundos (1,000,000,000 nanosegundos)  ms: milisegundos (1.000.000 nanosegundos)  uso µs: microsegundos (1000 nanosegundos) © Universidad Internacional de La Rioja (UNIR)  ns: nanosegundos (1 nanosegundo) Otros métodos para establecer este valor es mediante el formato ISO 8601: P[n]Y[n]M[n]DT[n]H[n]M[n]S o P[n]W y el formato alternativo ISO 8601: P[YYYY][MM]-[DD]T[hh]:[mm]:[ss]. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 17 Algunos ejemplos de su uso se muestran a continuación: INSERT INTO RiderResults (name, race, result) VALUES ('Andres', 'Tour de France', 89h4m48s); INSERT INTO RiderResults (name, race, result) VALUES ('Maria', 'Tour de France', PT89H8M53S); INSERT INTO RiderResults (name, race, result) VALUES ('Marco', 'Tour de France', P0000-00-00T89:09:09); Colecciones Los tres tipos de colecciones que admite CQL son map, set y list.  Map: es un conjunto (ordenado) de pares clave-valor, donde las claves son únicas y el mapa está ordenado por sus claves. CREATE TABLE clients ( id text PRIMARY KEY, name text, type map //Aquí define un Map con Clave-Valor Text-Text ); INSERT INTO clients (id, name, type) VALUES ('client001', 'Andres Luna', { 'bill' : 'ordinary', 'payment' : 'cash' }); // Actualiza un valor dentro de Map UPDATE clients SET type = {'payment': 'PayPal'} WHERE id = 'client001'; UPDATE clients SET type['payment'] = 'VISA' WHERE id = 'client001'; UPDATE clients SET type = type + {'mortage': 'Fixed Interest', 'investment': 'Risk'} WHERE id = 'client001'; © Universidad Internacional de La Rioja (UNIR) DELETE type['mortage'] FROM clients WHERE id = 'client001'; UPDATE clients SET type = type - { ‘mortage', 'investment'} WHERE id = 'client001'; Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 18  Set: es una colección ordenada de valores únicos. CREATE TABLE clients ( id text PRIMARY KEY, name text, type set //Aquí define un Set de tipo Text ); INSERT INTO clients (id, name, type) VALUES ('client002', 'Manuel Faena', {'A', 'B', 'C'}); UPDATE clients SET type = {'E', 'P', 'M'} WHERE id = 'client002'; //actualizas todo el Set UPDATE clients SET type = type + {'H', 'F'} WHERE id = 'client002'; // insertar un elemento que existe no es posible UPDATE clients SET type = type - {'H'} WHERE id = 'client002'; //no es un error intentar borrar si no existe  List: es una colección ordenada de valores no únicos donde los elementos se ordenan por su posición en la lista. CREATE TABLE products ( id text PRIMARY KEY, name text, order, pos list //Aquí define una Lista de enteros ); INSERT INTO products (id, name, order, pos) VALUES ('Table01', 'Table Reduce', 3, [10, 11, 12]); UPDATE products SET position = [ 210, 111, 412] WHERE id = 'Table01'; //actualiza toda la lista © Universidad Internacional de La Rioja (UNIR) UPDATE products SET order = 5, pos = pos + [ 45, 78 ] WHERE id = 'Table01'; // insertar dos elemento en la lista UPDATE products SET order = 4, pos = pos – WHERE id = 'client002'; //no es un error intentar borrar si no existe UPDATE products SET pos = 25 WHERE id = 'client002'; DELETE pos products WHERE id = 'client002'; Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 19  Tuple: es un conjunto de valores de longitud determinada donde cada valor puede ser de un tipo diferente. CREATE TABLE users ( user text, phones tuple, ) INSERT INTO users (user, phones) VALUES ('Pepe Navarro', ('home', '(34) 666-666-666')); Tipos definidos por el usuario (UDT) Los usuarios pueden crear sus propios tipos de datos. Para ello se emplea la instrucción CREATE TYPE. CREATE TYPE phone ( code int, number text, ) CREATE TYPE address ( street text, city text, zip text, phones map ) CREATE TABLE user ( © Universidad Internacional de La Rioja (UNIR) name text PRIMARY KEY, addresses map ) Ten en cuenta que, si intentas crear una UDT que existe, obtendrás un error. Por otra parte, a partir de la versión 3.7 de Cassandra, los UDT en la mayoría de los casos deben congelarse (frozen). Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 20 Frozen cambia el comportamiento de una colección o UDT. Al congelar una colección, los valores se serializan como un todo, impidiendo que dicha colección se pueda actualizar parcialmente. Al aplicar frozen, la colección se debe tratar como un todo en el momento de manipularla. Keyspace Es un objeto que contiene las familias de columnas, los índices, los UDT, el conocimiento del centro de datos, la estrategia utilizada en el espacio de claves, el factor de replicación, etc. En Cassandra, se puede considerar el keyspace como algo similar a la base de datos en un RDBMS. CREATE keyspace KeyspaceName with replication={'class' : strategy name, 'replication_factor' : No of replications on different nodes}; //Ejemplo CREATE keyspace Products with replication={'class':SimpleStrategy,'replication_factor': 3}; //Modificar un keyspace ALTER keyspace KeyspaceName with replication={'class':'StrategyName', 'replication_factor': no of replications on different nodes} with DURABLE_WRITES=true/false //Ejemplo ALTER Keyspace Products with replication={'class':'NetworktopologyStrategy', 'DataCenter1':1}; #Borrado © Universidad Internacional de La Rioja (UNIR) DROP keyspace Products Hay dos tipos de estrategias declaradas en Cassandra Syntax.  Estrategia simple (SimpleStrategy): se utiliza cuando solo tiene un centro de datos. En esta estrategia, la primera réplica se coloca en el nodo seleccionado por el particionador. Los nodos restantes se colocan en el sentido de las agujas del reloj en el anillo sin tener en cuenta la ubicación del rack o del nodo. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 21  Estrategia de topología de red (NetworktopologyStrategy): se utiliza cuando tiene más de un centro de datos. En esta estrategia, se debe proporcionar un factor de replicación para cada centro de datos por separado. La estrategia de topología de red coloca réplicas en nodos en el sentido de las agujas del reloj en el mismo centro de datos. Esta estrategia intenta colocar réplicas en diferentes racks.  Factor de replicación (ReplicationFactor): es el número de réplicas de datos colocadas en diferentes nodos. Para que no haya fallas, 3 es un buen factor de replicación. Más de dos factores de replicación garantizan que no haya un solo punto de falla. A veces, el servidor puede estar inactivo o puede ocurrir un problema de red, luego otras réplicas brindan servicio sin fallas. Ten en cuenta los siguientes aspectos sobre el keyspace:  Nombre del keyspace: no se puede modificar en Cassandra.  Nombre de la estrategia: se puede modificar especificando un nuevo nombre de estrategia.  Factor de replicación: se puede modificar especificando un nuevo factor de replicación.  DURABLE_WRITES: el valor DURABLE_WRITES se puede modificar especificando su valor verdadero o falso. Por defecto, es true. Si se establece en false, no se escribirán actualizaciones en el registro de confirmación y viceversa. © Universidad Internacional de La Rioja (UNIR) INSERT: insertando datos El comando INSERT escribe datos en columnas Cassandra en forma de fila. Dicho comando almacenará solo aquellas columnas proporcionadas por el usuario. Debe especificar necesariamente solo la columna de clave principal. Esta instrucción no devuelve ningún resultado. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 22 INSERT INTO Products.users (user, phones) VALUES ('Pepe Navarro', ('home', '(34) 666-666-666')); Ten en cuenta que Cassandra insertará una fila si no existe la clave principal indicada; de lo contrario, si la clave principal existe, actualizará esa fila. UPDATE: actualizando datos El comando UPDATE se emplea para actualizar los datos en la tabla Cassandra. Si no se devuelven resultados después de actualizar los datos, significa que los datos se actualizaron correctamente; de lo contrario, se devolverá un error. Los valores de columna se cambian en la cláusula Set, mientras que los datos se filtran con la cláusula WHERE. UPDATE Products.users Set phone = '(34) 666-666-666' WHERE user = 'Pepe Lopez'; DELETE: borrando datos El comando DELETE elimina una fila completa o algunas columnas de la tabla indicada. Cuando se eliminan datos, no se eliminan de la tabla inmediatamente. En su lugar, los datos eliminados se marcan con una lápida y se eliminan después de la compactación. © Universidad Internacional de La Rioja (UNIR) DELETE from Products.users WHERE user = 'Pepe Lopez'; Limitaciones en CQL  No admite consultas de agregación como max, min, avg.  No admite ni group by ni having.  No admite joins.  No admite consultas OR. Métodos de Captura y Almacenamiento de los Datos Tema 7. Ideas clave 23  No admite consultas con comodines.  No admite consultas de unión e intersección.  Las columnas de la tabla no se pueden filtrar sin crear el índice.  La consulta mayor que (>) y menor que (

Use Quizgecko on...
Browser
Browser