SlideShare uma empresa Scribd logo
1 de 47
Introducción a CQL3
José Hernández
Isthari
jose.Hernandez@isthari.com

ISTHARI – INTRODUCCIÓN CQL3
Apache Cassandra


Base de datos NoSQL



Descentralizada



Replicación en multiples datacenter



Tolerante a fallos



Escalabilidad lineal



Tunable consistency

ISTHARI – INTRODUCCIÓN CQL3
Key - value
Users
Email

Name

3d2ce2d2-933b

john@nobody.com

John

54a026ae-933b

doe@nobody.com

Doe

ISTHARI – INTRODUCCIÓN CQL3
Desnormalización
Users
Email

Name

3d2ce2d2-933b

john@nobody.com

John

54a026ae-933b

doe@nobody.com

Doe

Users_by_email
ID
john@nobody.com

3d2ce2d2-933b

doe@nobody.com

54a026ae-933b

ISTHARI – INTRODUCCIÓN CQL3
Replicación


Primary key john@nobody.com => hash: 18

ISTHARI – INTRODUCCIÓN CQL3
Replicación


Primary key john@nobody.com => hash: 18

ISTHARI – INTRODUCCIÓN CQL3
Placement


SimpleStrategy



NetworkTopologyStrategy


SimpleSnitch, pruebas y desarrollo



DynamicSnitch, en función del rendimiento



PropertyFileSnitch, asignación IP => Datacenter y rack



EC2Snitch



EC2MultiRegionSnitch



RackInferringSnitch, a partir de red

ISTHARI – INTRODUCCIÓN CQL3
Consistency level
Any

(write)

ISTHARI – INTRODUCCIÓN CQL3
Consistency level
One

ISTHARI – INTRODUCCIÓN CQL3
Consistency level
Two

ISTHARI – INTRODUCCIÓN CQL3
Consistency level
Any

(write)

ISTHARI – INTRODUCCIÓN CQL3
Consistency level
Quorum

Replicas/1+2

ISTHARI – INTRODUCCIÓN CQL3
Consistency level
All

ISTHARI – INTRODUCCIÓN CQL3
Keyspace
CREATE KEYSPACE cql WITH replication = {
'class': ‘NetworkTopologyStrategy',
and strategy_options:Madrid = 3,
and strategy_options:Barcelona = 6,
and strategy_options:Paris = 30
}

ISTHARI – INTRODUCCIÓN CQL3
Table
CREATE TABLE users (
id uuid PRIMARY KEY , email text, name text ) ;

ISTHARI – INTRODUCCIÓN CQL3
Insert
CREATE TABLE users (
id uuid PRIMARY KEY , email text, name text ) ;
INSERT INTO users (id, email , name )
VALUES ( 4b8f9e26-…, 'john@nobody.com', 'John');

ISTHARI – INTRODUCCIÓN CQL3
Update
CREATE TABLE users (
id uuid PRIMARY KEY , email text, name text ) ;
INSERT INTO users (id, email , name )
VALUES ( 4b8f9e26-…, 'john@nobody.com', 'John');
UPDATE users SET name = 'Doe' where id=4b8f9e26-…;

ISTHARI – INTRODUCCIÓN CQL3
Delete
CREATE TABLE users (
id uuid PRIMARY KEY , email text, name text ) ;
INSERT INTO users (id, email , name )
VALUES ( 4b8f9e26-…, 'john@nobody.com', 'John');
UPDATE users SET name = 'Doe' where id=4b8f9e26-…;
DELETE from user WHERE id=4b8f9e26-…;

ISTHARI – INTRODUCCIÓN CQL3
Select
SELECT * from users ;
id

| email

| name

------------+-----------------+-----4b8f9e26-… | john@nobody.com |

ISTHARI – INTRODUCCIÓN CQL3

Doe
UPSERT
SELECT * from users ;
id

| email

| name

------------+-----------------+-----4b8f9e26-… | john@nobody.com |

Doe

INSERT INTO users (id, email , name )
VALUES ( 4b8f9e26-…, 'john@nobody.com', 'Doe');
UPDATE users SET email = 'doe@nobody.com', name='Doe'
where id=859086f4-…;

ISTHARI – INTRODUCCIÓN CQL3
Primary key compuesto
CREATE TABLE employees (
company text,
name text,
age int,
role text,
primary key (company, name));

ISTHARI – INTRODUCCIÓN CQL3
Primary key compuesto
CREATE TABLE employees (

Name

Age

Role

company text,

IST

John

30

Dev

name text,

IST

Doe

40

Admin

age int,

RPT

Peter

30

Dev

role text,
primary key (company, name));

ISTHARI – INTRODUCCIÓN CQL3
Primary key compuesto
CREATE TABLE employees (

Name

Age

Role

company text,

IST

John

30

Dev

name text,

IST

Doe

40

Admin

age int,

RPT

Peter

30

Dev

role text,
primary key (company, name));
Doe:age
IST

ISTHARI – INTRODUCCIÓN CQL3

Doe:role

John:age

John:role

40

Admin

30

Dev
Primary key compuesto
CREATE TABLE employees (

Name

Age

Role

company text,

IST

John

30

Dev

name text,

IST

Doe

40

Admin

age int,

RPT

Peter

30

Dev

role text,
primary key (company, name));
company | name

| age | role

---------+-------+-----+------RPT | Peter |

30 |

IST |

Doe |

40 | Admin

IST |

John |

ISTHARI – INTRODUCCIÓN CQL3

30 |

Dev
Dev
Partition key compuesto
CREATE TABLE sensor_data (
sensor_id uuid ,
date timestamp,
value decimal,
primary KEY (sensor_id , date));
Fecha1:value
sensor1

ISTHARI – INTRODUCCIÓN CQL3

Fecha2:value

Fecha3:value

20

0.5

-10.3
Partition key compuesto
CREATE TABLE sensor_data (
sensor_id uuid ,
date timestamp,
value decimal,
primary KEY (sensor_id , date));
Límite

2.000.000.000 de columnas por registro, teórico

ISTHARI – INTRODUCCIÓN CQL3
Partition key compuesto
CREATE TABLE sensor_data (
sensor_id uuid ,
date timestamp,
value decimal,
primary KEY (sensor_id , date));
Límite

2.000.000.000 de columnas por registro, teórico

Límite

práctico 100.000 columnas por registro

ISTHARI – INTRODUCCIÓN CQL3
Partition key compuesto
CREATE TABLE sensor_data (
sensor_id uuid,
year int,
date timestamp,
value decimal,
primary KEY ((sensor_id, year), date));
Fecha1:value
Sensor_1:2014

ISTHARI – INTRODUCCIÓN CQL3

Fecha2:value

Fecha3:value

20

0.5

-10.3
Partition key compuesto
CREATE TABLE sensor_data (
sensor_id uuid,
year int,
date timestamp,
value decimal,
primary KEY ((sensor_id, year), date));
SELECT * FROM sensor_data where sensor_id=c3e04efc-…;

ISTHARI – INTRODUCCIÓN CQL3
Partition key compuesto
CREATE TABLE sensor_data (
sensor_id uuid,
year int,
date timestamp,
value decimal,
primary KEY ((sensor_id, year), date));
SELECT * FROM sensor_data where sensor_id=c3e04efc-…;
SELECT * FROM sensor_data where sensor_id=c3e04efc-…
and year =2014;

ISTHARI – INTRODUCCIÓN CQL3
Partition key compuesto
CREATE TABLE sensor_data (
sensor_id uuid,
year int,
date timestamp,
value decimal,
primary KEY ((sensor_id, year), date));
SELECT * FROM sensor_data where sensor_id=c3e04efc-…;
SELECT * FROM sensor_data where sensor_id=c3e04efc-…
and year =2014;
SELECT * FROM sensor_data where sensor_id=c3e04efc-…
and year =2014 and date > '2014-02-11 12:00:00';
ISTHARI – INTRODUCCIÓN CQL3
Lightweight transacion
CREATE TABLE user_by_email (
email text PRIMARY KEY ,
user_id uuid);

ISTHARI – INTRODUCCIÓN CQL3
Lightweight transacion
CREATE TABLE user_by_email (
email text PRIMARY KEY ,
user_id uuid);
INSERT INTO user_by_email (email, user_id )
VALUES ( 'john@nobody.com', d3979598-93cf-…) if not exists;

ISTHARI – INTRODUCCIÓN CQL3
Batch
BEGIN BATCH
INSERT INTO user_by_email (email, user_id )
VALUES ( 'john@nobody.com', d3979598-93cf-…) if not exists;
INSERT INTO user (id, email , name ) VALUES
(d3979598-93cf-…, 'john@nobody.com', 'john');
APPLY BATCH

ISTHARI – INTRODUCCIÓN CQL3
Set
CREATE TABLE articulo (
id uuid PRIMARY KEY ,
contenido text,
tags set<text >);

ISTHARI – INTRODUCCIÓN CQL3
Set
CREATE TABLE articulo (
id uuid PRIMARY KEY ,
contenido text,
tags set<text >);

ISTHARI – INTRODUCCIÓN CQL3

Contenido
e2a9b6e6-…

Tags

Articulo

{‘ciencia’, ‘noticia’}
Set
CREATE TABLE articulo (
id uuid PRIMARY KEY ,
contenido text,

e2a9b6e6-…

tags set<text >);

Contenido
e2a9b6e6-…

ISTHARI – INTRODUCCIÓN CQL3

Contenido

Articulo

Tags

Articulo

{‘ciencia’, ‘noticia’}

Tags:ciencia

Tags:noticia
Set
CREATE TABLE articulo (
id uuid PRIMARY KEY ,
contenido text,
tags set<text >);
INSERT INTO articulo (id, contenido , tags )
VALUES ( e2a9b6e6- …, 'articulo', {'ciencia', 'noticia'});

ISTHARI – INTRODUCCIÓN CQL3
Set
CREATE TABLE articulo (
id uuid PRIMARY KEY ,
contenido text,
tags set<text >);
INSERT INTO articulo (id, contenido , tags )
VALUES ( e2a9b6e6- …, 'articulo', {'ciencia', 'noticia'});
UPDATE articulo SET tags = tags+{'politica'} where id=e2a9b6e6-…;
UPDATE articulo SET tags = tags-{'politica'} where id=e2a9b6e6-…;

ISTHARI – INTRODUCCIÓN CQL3
List
CREATE TABLE ruta(
id uuid PRIMARY KEY ,
nombre text,
ciudades list<text >);

ISTHARI – INTRODUCCIÓN CQL3

Nombre
e2a9b6e6-…

Ciudades

Ruta 1

[‘Madrid’,
‘Barcelona’]
List
CREATE TABLE ruta(
id uuid PRIMARY KEY ,
nombre text,
ciudades list<text >);

Nombre
e2a9b6e6-…

Ciudades

Ruta 1

[‘Madrid’,
‘Barcelona’]

Nombre
e2a9b6e6-…

ISTHARI – INTRODUCCIÓN CQL3

Ciudades:f7e5450
039..8d

Ciudades:7e54501
39..8d

Articulo

Madrid

Barcelona
List
CREATE TABLE ruta(
id uuid PRIMARY KEY ,
nombre text,
ciudades list<text >);

Nombre
e2a9b6e6-…

Ciudades

Ruta 1

[‘Madrid’,
‘Barcelona’]

Insert into ruta (id, nombre, ciudades)
Values (e2a9b6e6-…, ‘Ruta 1’, [‘Madrid’, ‘Barcelona’]);

ISTHARI – INTRODUCCIÓN CQL3
List
CREATE TABLE ruta(
id uuid PRIMARY KEY ,
nombre text,
ciudades list<text >);

Nombre
e2a9b6e6-…

Ciudades

Ruta 1

[‘Madrid’,
‘Barcelona’]

Insert into ruta (id, nombre, ciudades)
Values (e2a9b6e6-…, ‘Ruta 1’, [‘Madrid’, ‘Barcelona’]);
Update ruta set ciudades = ciudades + [‘Paris’] where id =e2a9b6e6-…;
Update ruta set ciudades = [‘Paris’] + ciudades where id=e2a9b6e6-…;
Update ruta set ciudades[1]=[‘Roma’] where id=e2a9b6e6-…;
ISTHARI – INTRODUCCIÓN CQL3
Map
CREATE TABLE producto(
id uuid PRIMARY KEY ,
nombre text,
caracteristicas
map<string, string >);

ISTHARI – INTRODUCCIÓN CQL3

Nombre
e2a9b6e6-…

Caracteristicas

Mesa

{‘alto’:’100cm’,
‘ancho’:’20cm’,
‘fondo’:’50cm’}
Map
CREATE TABLE producto(
id uuid PRIMARY KEY ,
nombre text,

Nombre
e2a9b6e6-…

caracteristicas

Caracteristicas

Mesa

{‘alto’:’100cm’,
‘ancho’:’20cm’,
‘fondo’:’50cm’}

map<string, string >);

Nombre
e2a9b6e6-…

ISTHARI – INTRODUCCIÓN CQL3

Caracteristicas
:alto

Caracteristicas
:ancho

Caracteristicas:
fondo

Mesa

100cm

20cm

50cm
Map
CREATE TABLE producto(
id uuid PRIMARY KEY ,
nombre text,
caracteristicas

Nombre
e2a9b6e6-…

Caracteristicas

Mesa

{‘alto’:’100cm’,
‘ancho’:’20cm’,
‘fondo’:’50cm’}

map<string, string >);
Insert into producto (id, nombre, caracteristicas)

Values (e2a9b6e6-…, ‘Mesa’, {‘alto’:’100cm’, ‘ancho’:’20cm’, …});
Update product set caracteristicas[‘alto’]=‘120cm’
where id=e2a9b6e6-…
ISTHARI – INTRODUCCIÓN CQL3
Preguntas y sugerencias
Gracias por asistir

ISTHARI – INTRODUCCIÓN CQL3

Mais conteúdo relacionado

Destaque

Cattle Production: Considerations for Pasture-Based Beef and Dairy Producers
Cattle Production: Considerations for Pasture-Based Beef and Dairy ProducersCattle Production: Considerations for Pasture-Based Beef and Dairy Producers
Cattle Production: Considerations for Pasture-Based Beef and Dairy ProducersGardening
 
Ps presentation sponsring och finansiering berghs 2014 24e mars
Ps presentation sponsring och finansiering   berghs 2014 24e marsPs presentation sponsring och finansiering   berghs 2014 24e mars
Ps presentation sponsring och finansiering berghs 2014 24e marsInteraktiva Möten
 
презентация по секциям
презентация по секциямпрезентация по секциям
презентация по секциямmarina423
 
Manajemen pendidikan
Manajemen pendidikanManajemen pendidikan
Manajemen pendidikanEvin R S
 
Absence makes the heart grow fonder
Absence makes the heart grow fonderAbsence makes the heart grow fonder
Absence makes the heart grow fonderVisith Dantanarayana
 
Miller’s Creek Novels by Cathy Bryant
Miller’s  Creek Novels by Cathy BryantMiller’s  Creek Novels by Cathy Bryant
Miller’s Creek Novels by Cathy BryantCathy Bryant
 
Management information system
Management information systemManagement information system
Management information systemshinydey
 
международный форум
международный форуммеждународный форум
международный форумmarina423
 
140915 så får du som användare det du behöver vid upphandling av va
140915 så får du som användare det du behöver vid upphandling av va140915 så får du som användare det du behöver vid upphandling av va
140915 så får du som användare det du behöver vid upphandling av vaInteraktiva Möten
 

Destaque (16)

Konferenc16
Konferenc16Konferenc16
Konferenc16
 
Cattle Production: Considerations for Pasture-Based Beef and Dairy Producers
Cattle Production: Considerations for Pasture-Based Beef and Dairy ProducersCattle Production: Considerations for Pasture-Based Beef and Dairy Producers
Cattle Production: Considerations for Pasture-Based Beef and Dairy Producers
 
Ps presentation sponsring och finansiering berghs 2014 24e mars
Ps presentation sponsring och finansiering   berghs 2014 24e marsPs presentation sponsring och finansiering   berghs 2014 24e mars
Ps presentation sponsring och finansiering berghs 2014 24e mars
 
Meditech SpO2 Module MD200
Meditech SpO2 Module MD200Meditech SpO2 Module MD200
Meditech SpO2 Module MD200
 
Coolidge dam jan05 casehis f (5)
Coolidge dam jan05 casehis f (5)Coolidge dam jan05 casehis f (5)
Coolidge dam jan05 casehis f (5)
 
Coolidge dam jan05 casehis f
Coolidge dam jan05 casehis fCoolidge dam jan05 casehis f
Coolidge dam jan05 casehis f
 
презентация по секциям
презентация по секциямпрезентация по секциям
презентация по секциям
 
Soundgrapher Magazine
Soundgrapher MagazineSoundgrapher Magazine
Soundgrapher Magazine
 
Manajemen pendidikan
Manajemen pendidikanManajemen pendidikan
Manajemen pendidikan
 
Absence makes the heart grow fonder
Absence makes the heart grow fonderAbsence makes the heart grow fonder
Absence makes the heart grow fonder
 
Upphandling enligt nl09
Upphandling enligt nl09Upphandling enligt nl09
Upphandling enligt nl09
 
Miller’s Creek Novels by Cathy Bryant
Miller’s  Creek Novels by Cathy BryantMiller’s  Creek Novels by Cathy Bryant
Miller’s Creek Novels by Cathy Bryant
 
Management information system
Management information systemManagement information system
Management information system
 
October 1917
October 1917October 1917
October 1917
 
международный форум
международный форуммеждународный форум
международный форум
 
140915 så får du som användare det du behöver vid upphandling av va
140915 så får du som användare det du behöver vid upphandling av va140915 så får du som användare det du behöver vid upphandling av va
140915 så får du som användare det du behöver vid upphandling av va
 

Semelhante a Introduccion a Cassandra CQL3

Tutoria Lenguaje C++
Tutoria Lenguaje C++Tutoria Lenguaje C++
Tutoria Lenguaje C++ruth_reategui
 
Informe estructuras lineales
Informe estructuras linealesInforme estructuras lineales
Informe estructuras linealeseliezerbs
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)luis freddy
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)luis freddy
 
Cassandra Meetup
Cassandra MeetupCassandra Meetup
Cassandra MeetupStratebi
 
Taller de MySQL (DDL)
Taller de MySQL (DDL)Taller de MySQL (DDL)
Taller de MySQL (DDL)mgpc
 
Ejercicios resuletos de programacion
Ejercicios resuletos de programacionEjercicios resuletos de programacion
Ejercicios resuletos de programacionWilliam Lozano
 
Informe tecnico u 3-victor uex
Informe tecnico u 3-victor uexInforme tecnico u 3-victor uex
Informe tecnico u 3-victor uexvictoruex
 
Tallerprogramacion
TallerprogramacionTallerprogramacion
Tallerprogramacionjohanadoria
 
Trabajo final
Trabajo finalTrabajo final
Trabajo finalgmr979
 
Inf 14 (ventadellantas) rines
Inf 14 (ventadellantas)   rinesInf 14 (ventadellantas)   rines
Inf 14 (ventadellantas) rinesCarlos Guzmán
 

Semelhante a Introduccion a Cassandra CQL3 (19)

BigData - NoSQL
BigData -  NoSQL BigData -  NoSQL
BigData - NoSQL
 
Tutoria Lenguaje C++
Tutoria Lenguaje C++Tutoria Lenguaje C++
Tutoria Lenguaje C++
 
Informe estructuras lineales
Informe estructuras linealesInforme estructuras lineales
Informe estructuras lineales
 
Informe estructuras lineales
Informe estructuras linealesInforme estructuras lineales
Informe estructuras lineales
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
 
Cassandra Meetup
Cassandra MeetupCassandra Meetup
Cassandra Meetup
 
Taller de MySQL (DDL)
Taller de MySQL (DDL)Taller de MySQL (DDL)
Taller de MySQL (DDL)
 
Práctica SQL en MYSQL
Práctica SQL en MYSQLPráctica SQL en MYSQL
Práctica SQL en MYSQL
 
Cursores
CursoresCursores
Cursores
 
Ejercicios resuletos de programacion
Ejercicios resuletos de programacionEjercicios resuletos de programacion
Ejercicios resuletos de programacion
 
Integración de DataStax de Spark con Cassandra
Integración de DataStax de Spark con CassandraIntegración de DataStax de Spark con Cassandra
Integración de DataStax de Spark con Cassandra
 
LAB 13.docx
LAB 13.docxLAB 13.docx
LAB 13.docx
 
Eliminando SQL injection
Eliminando SQL injectionEliminando SQL injection
Eliminando SQL injection
 
Informe tecnico u 3-victor uex
Informe tecnico u 3-victor uexInforme tecnico u 3-victor uex
Informe tecnico u 3-victor uex
 
Tallerprogramacion
TallerprogramacionTallerprogramacion
Tallerprogramacion
 
Funciones
FuncionesFunciones
Funciones
 
Trabajo final
Trabajo finalTrabajo final
Trabajo final
 
Inf 14 (ventadellantas) rines
Inf 14 (ventadellantas)   rinesInf 14 (ventadellantas)   rines
Inf 14 (ventadellantas) rines
 

Mais de Jose Felix Hernandez Barrio

Mais de Jose Felix Hernandez Barrio (6)

Cassandra Motores de recomendación Isthari - Datastax
Cassandra Motores de recomendación Isthari - DatastaxCassandra Motores de recomendación Isthari - Datastax
Cassandra Motores de recomendación Isthari - Datastax
 
Recomendación con Mahout sobre Cassandra
Recomendación con Mahout sobre CassandraRecomendación con Mahout sobre Cassandra
Recomendación con Mahout sobre Cassandra
 
Despliegue de Cassandra en la nube de Amazon
Despliegue de Cassandra en la nube de AmazonDespliegue de Cassandra en la nube de Amazon
Despliegue de Cassandra en la nube de Amazon
 
Casos de uso Cassandra
Casos de uso CassandraCasos de uso Cassandra
Casos de uso Cassandra
 
Workshop desarrollo Cassandra con el driver Java
Workshop desarrollo Cassandra con el driver JavaWorkshop desarrollo Cassandra con el driver Java
Workshop desarrollo Cassandra con el driver Java
 
Workshop administracion cassandra
Workshop administracion cassandraWorkshop administracion cassandra
Workshop administracion cassandra
 

Último

Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaYeimys Ch
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y maslida630411
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 

Último (20)

Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y mas
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 

Introduccion a Cassandra CQL3

  • 1. Introducción a CQL3 José Hernández Isthari jose.Hernandez@isthari.com ISTHARI – INTRODUCCIÓN CQL3
  • 2. Apache Cassandra  Base de datos NoSQL  Descentralizada  Replicación en multiples datacenter  Tolerante a fallos  Escalabilidad lineal  Tunable consistency ISTHARI – INTRODUCCIÓN CQL3
  • 5. Replicación  Primary key john@nobody.com => hash: 18 ISTHARI – INTRODUCCIÓN CQL3
  • 6. Replicación  Primary key john@nobody.com => hash: 18 ISTHARI – INTRODUCCIÓN CQL3
  • 7. Placement  SimpleStrategy  NetworkTopologyStrategy  SimpleSnitch, pruebas y desarrollo  DynamicSnitch, en función del rendimiento  PropertyFileSnitch, asignación IP => Datacenter y rack  EC2Snitch  EC2MultiRegionSnitch  RackInferringSnitch, a partir de red ISTHARI – INTRODUCCIÓN CQL3
  • 14. Keyspace CREATE KEYSPACE cql WITH replication = { 'class': ‘NetworkTopologyStrategy', and strategy_options:Madrid = 3, and strategy_options:Barcelona = 6, and strategy_options:Paris = 30 } ISTHARI – INTRODUCCIÓN CQL3
  • 15. Table CREATE TABLE users ( id uuid PRIMARY KEY , email text, name text ) ; ISTHARI – INTRODUCCIÓN CQL3
  • 16. Insert CREATE TABLE users ( id uuid PRIMARY KEY , email text, name text ) ; INSERT INTO users (id, email , name ) VALUES ( 4b8f9e26-…, 'john@nobody.com', 'John'); ISTHARI – INTRODUCCIÓN CQL3
  • 17. Update CREATE TABLE users ( id uuid PRIMARY KEY , email text, name text ) ; INSERT INTO users (id, email , name ) VALUES ( 4b8f9e26-…, 'john@nobody.com', 'John'); UPDATE users SET name = 'Doe' where id=4b8f9e26-…; ISTHARI – INTRODUCCIÓN CQL3
  • 18. Delete CREATE TABLE users ( id uuid PRIMARY KEY , email text, name text ) ; INSERT INTO users (id, email , name ) VALUES ( 4b8f9e26-…, 'john@nobody.com', 'John'); UPDATE users SET name = 'Doe' where id=4b8f9e26-…; DELETE from user WHERE id=4b8f9e26-…; ISTHARI – INTRODUCCIÓN CQL3
  • 19. Select SELECT * from users ; id | email | name ------------+-----------------+-----4b8f9e26-… | john@nobody.com | ISTHARI – INTRODUCCIÓN CQL3 Doe
  • 20. UPSERT SELECT * from users ; id | email | name ------------+-----------------+-----4b8f9e26-… | john@nobody.com | Doe INSERT INTO users (id, email , name ) VALUES ( 4b8f9e26-…, 'john@nobody.com', 'Doe'); UPDATE users SET email = 'doe@nobody.com', name='Doe' where id=859086f4-…; ISTHARI – INTRODUCCIÓN CQL3
  • 21. Primary key compuesto CREATE TABLE employees ( company text, name text, age int, role text, primary key (company, name)); ISTHARI – INTRODUCCIÓN CQL3
  • 22. Primary key compuesto CREATE TABLE employees ( Name Age Role company text, IST John 30 Dev name text, IST Doe 40 Admin age int, RPT Peter 30 Dev role text, primary key (company, name)); ISTHARI – INTRODUCCIÓN CQL3
  • 23. Primary key compuesto CREATE TABLE employees ( Name Age Role company text, IST John 30 Dev name text, IST Doe 40 Admin age int, RPT Peter 30 Dev role text, primary key (company, name)); Doe:age IST ISTHARI – INTRODUCCIÓN CQL3 Doe:role John:age John:role 40 Admin 30 Dev
  • 24. Primary key compuesto CREATE TABLE employees ( Name Age Role company text, IST John 30 Dev name text, IST Doe 40 Admin age int, RPT Peter 30 Dev role text, primary key (company, name)); company | name | age | role ---------+-------+-----+------RPT | Peter | 30 | IST | Doe | 40 | Admin IST | John | ISTHARI – INTRODUCCIÓN CQL3 30 | Dev Dev
  • 25. Partition key compuesto CREATE TABLE sensor_data ( sensor_id uuid , date timestamp, value decimal, primary KEY (sensor_id , date)); Fecha1:value sensor1 ISTHARI – INTRODUCCIÓN CQL3 Fecha2:value Fecha3:value 20 0.5 -10.3
  • 26. Partition key compuesto CREATE TABLE sensor_data ( sensor_id uuid , date timestamp, value decimal, primary KEY (sensor_id , date)); Límite 2.000.000.000 de columnas por registro, teórico ISTHARI – INTRODUCCIÓN CQL3
  • 27. Partition key compuesto CREATE TABLE sensor_data ( sensor_id uuid , date timestamp, value decimal, primary KEY (sensor_id , date)); Límite 2.000.000.000 de columnas por registro, teórico Límite práctico 100.000 columnas por registro ISTHARI – INTRODUCCIÓN CQL3
  • 28. Partition key compuesto CREATE TABLE sensor_data ( sensor_id uuid, year int, date timestamp, value decimal, primary KEY ((sensor_id, year), date)); Fecha1:value Sensor_1:2014 ISTHARI – INTRODUCCIÓN CQL3 Fecha2:value Fecha3:value 20 0.5 -10.3
  • 29. Partition key compuesto CREATE TABLE sensor_data ( sensor_id uuid, year int, date timestamp, value decimal, primary KEY ((sensor_id, year), date)); SELECT * FROM sensor_data where sensor_id=c3e04efc-…; ISTHARI – INTRODUCCIÓN CQL3
  • 30. Partition key compuesto CREATE TABLE sensor_data ( sensor_id uuid, year int, date timestamp, value decimal, primary KEY ((sensor_id, year), date)); SELECT * FROM sensor_data where sensor_id=c3e04efc-…; SELECT * FROM sensor_data where sensor_id=c3e04efc-… and year =2014; ISTHARI – INTRODUCCIÓN CQL3
  • 31. Partition key compuesto CREATE TABLE sensor_data ( sensor_id uuid, year int, date timestamp, value decimal, primary KEY ((sensor_id, year), date)); SELECT * FROM sensor_data where sensor_id=c3e04efc-…; SELECT * FROM sensor_data where sensor_id=c3e04efc-… and year =2014; SELECT * FROM sensor_data where sensor_id=c3e04efc-… and year =2014 and date > '2014-02-11 12:00:00'; ISTHARI – INTRODUCCIÓN CQL3
  • 32. Lightweight transacion CREATE TABLE user_by_email ( email text PRIMARY KEY , user_id uuid); ISTHARI – INTRODUCCIÓN CQL3
  • 33. Lightweight transacion CREATE TABLE user_by_email ( email text PRIMARY KEY , user_id uuid); INSERT INTO user_by_email (email, user_id ) VALUES ( 'john@nobody.com', d3979598-93cf-…) if not exists; ISTHARI – INTRODUCCIÓN CQL3
  • 34. Batch BEGIN BATCH INSERT INTO user_by_email (email, user_id ) VALUES ( 'john@nobody.com', d3979598-93cf-…) if not exists; INSERT INTO user (id, email , name ) VALUES (d3979598-93cf-…, 'john@nobody.com', 'john'); APPLY BATCH ISTHARI – INTRODUCCIÓN CQL3
  • 35. Set CREATE TABLE articulo ( id uuid PRIMARY KEY , contenido text, tags set<text >); ISTHARI – INTRODUCCIÓN CQL3
  • 36. Set CREATE TABLE articulo ( id uuid PRIMARY KEY , contenido text, tags set<text >); ISTHARI – INTRODUCCIÓN CQL3 Contenido e2a9b6e6-… Tags Articulo {‘ciencia’, ‘noticia’}
  • 37. Set CREATE TABLE articulo ( id uuid PRIMARY KEY , contenido text, e2a9b6e6-… tags set<text >); Contenido e2a9b6e6-… ISTHARI – INTRODUCCIÓN CQL3 Contenido Articulo Tags Articulo {‘ciencia’, ‘noticia’} Tags:ciencia Tags:noticia
  • 38. Set CREATE TABLE articulo ( id uuid PRIMARY KEY , contenido text, tags set<text >); INSERT INTO articulo (id, contenido , tags ) VALUES ( e2a9b6e6- …, 'articulo', {'ciencia', 'noticia'}); ISTHARI – INTRODUCCIÓN CQL3
  • 39. Set CREATE TABLE articulo ( id uuid PRIMARY KEY , contenido text, tags set<text >); INSERT INTO articulo (id, contenido , tags ) VALUES ( e2a9b6e6- …, 'articulo', {'ciencia', 'noticia'}); UPDATE articulo SET tags = tags+{'politica'} where id=e2a9b6e6-…; UPDATE articulo SET tags = tags-{'politica'} where id=e2a9b6e6-…; ISTHARI – INTRODUCCIÓN CQL3
  • 40. List CREATE TABLE ruta( id uuid PRIMARY KEY , nombre text, ciudades list<text >); ISTHARI – INTRODUCCIÓN CQL3 Nombre e2a9b6e6-… Ciudades Ruta 1 [‘Madrid’, ‘Barcelona’]
  • 41. List CREATE TABLE ruta( id uuid PRIMARY KEY , nombre text, ciudades list<text >); Nombre e2a9b6e6-… Ciudades Ruta 1 [‘Madrid’, ‘Barcelona’] Nombre e2a9b6e6-… ISTHARI – INTRODUCCIÓN CQL3 Ciudades:f7e5450 039..8d Ciudades:7e54501 39..8d Articulo Madrid Barcelona
  • 42. List CREATE TABLE ruta( id uuid PRIMARY KEY , nombre text, ciudades list<text >); Nombre e2a9b6e6-… Ciudades Ruta 1 [‘Madrid’, ‘Barcelona’] Insert into ruta (id, nombre, ciudades) Values (e2a9b6e6-…, ‘Ruta 1’, [‘Madrid’, ‘Barcelona’]); ISTHARI – INTRODUCCIÓN CQL3
  • 43. List CREATE TABLE ruta( id uuid PRIMARY KEY , nombre text, ciudades list<text >); Nombre e2a9b6e6-… Ciudades Ruta 1 [‘Madrid’, ‘Barcelona’] Insert into ruta (id, nombre, ciudades) Values (e2a9b6e6-…, ‘Ruta 1’, [‘Madrid’, ‘Barcelona’]); Update ruta set ciudades = ciudades + [‘Paris’] where id =e2a9b6e6-…; Update ruta set ciudades = [‘Paris’] + ciudades where id=e2a9b6e6-…; Update ruta set ciudades[1]=[‘Roma’] where id=e2a9b6e6-…; ISTHARI – INTRODUCCIÓN CQL3
  • 44. Map CREATE TABLE producto( id uuid PRIMARY KEY , nombre text, caracteristicas map<string, string >); ISTHARI – INTRODUCCIÓN CQL3 Nombre e2a9b6e6-… Caracteristicas Mesa {‘alto’:’100cm’, ‘ancho’:’20cm’, ‘fondo’:’50cm’}
  • 45. Map CREATE TABLE producto( id uuid PRIMARY KEY , nombre text, Nombre e2a9b6e6-… caracteristicas Caracteristicas Mesa {‘alto’:’100cm’, ‘ancho’:’20cm’, ‘fondo’:’50cm’} map<string, string >); Nombre e2a9b6e6-… ISTHARI – INTRODUCCIÓN CQL3 Caracteristicas :alto Caracteristicas :ancho Caracteristicas: fondo Mesa 100cm 20cm 50cm
  • 46. Map CREATE TABLE producto( id uuid PRIMARY KEY , nombre text, caracteristicas Nombre e2a9b6e6-… Caracteristicas Mesa {‘alto’:’100cm’, ‘ancho’:’20cm’, ‘fondo’:’50cm’} map<string, string >); Insert into producto (id, nombre, caracteristicas) Values (e2a9b6e6-…, ‘Mesa’, {‘alto’:’100cm’, ‘ancho’:’20cm’, …}); Update product set caracteristicas[‘alto’]=‘120cm’ where id=e2a9b6e6-… ISTHARI – INTRODUCCIÓN CQL3
  • 47. Preguntas y sugerencias Gracias por asistir ISTHARI – INTRODUCCIÓN CQL3