SlideShare a Scribd company logo
1 of 19
Download to read offline
GORM
for
Cassandra
@rafbermudez
¿Y tú?
Soy un yonki de Groovy
Cassandra, te quiero conocer
¿Cómo he llegado hasta aquí?
❏ Apache Cassandra
■ Intro
■ Key-value vs Column
■ CAP
■ Partition Key
■ Replication Factor
■ Consistency Level
■ Virtual Nodes
■ Example
❏ Groovy + Cassandra
APACHE CASSANDRA
EN
8
PASOS
Intro
❏ Apache Cassandra
■ Intro
■ Key-value vs Column
■ CAP
■ Partition Key
■ Replication Factor
■ Consistency Level
■ Virtual Nodes
■ Example
❏ Groovy + Cassandra
● Sistema NoSQL, distribuído y open source
● Objetivo: Big Data
○ Escalabilidad y Disponibilidad
● Topología en Anillo
○ Masterless
○ Clustering Column
● INSERT Y DELETE
○ INSERT = UPDATE (casi)
● CQL (Cassandra Query Language)
Row oriented or column oriented?
❏ Apache Cassandra
■ Intro
■ Key-value vs Column
■ CAP
■ Partition Key
■ Replication Factor
■ Consistency Level
■ Virtual Nodes
■ Example
❏ Groovy + Cassandra
● rows oriented
○ Row id, Columnas diferentes
apple -> colour weight price variety
"red" 100 40 "Cox"
orange -> colour weight price origin
"orange" 120 50 "Spain"
● column oriented
○ Column id, 1 fila y millones de columnas
temperature -> 2012-09-01 2012-09-02 2012-09-03 ...
40 41 39 ...
● CASSANDRA = rows contain columns!!
○ Idénticas columnas
○ Acceso fila + columna
CAP Theorem
❏ Apache Cassandra
■ Intro
■ Key-value vs Column
■ CAP
■ Partition Key
■ Replication Factor
■ Consistency Level
■ Virtual Nodes
■ Example
❏ Groovy + Cassandra
¿Aquí?
● PRIMARY KEY
○ Clave primaria
○ Simple o compuesta
● PARTITION KEY
○ Distribuye los datos por los nodos
○ primary key simple = partition key
○ primary key compuesta = 1er atributo es la partition key
● CLUSTERING COLUMN
○ Define cómo se ordenan los datos en el nodo
○ son los siguientes atributos de una primary key compuesta
Distribución de los datos en el anillo
❏ Apache Cassandra
■ Intro
■ Key-value vs Column
■ CAP
■ Partition Key
■ Replication Factor
■ Consistency Level
■ Virtual Nodes
■ Example
❏ Groovy + Cassandra
Replication factor = 1
❏ Apache Cassandra
■ Intro
■ Key-value vs Column
■ CAP
■ Partition Key
■ Replication Factor
■ Consistency Level
■ Virtual Nodes
■ Example
❏ Groovy + Cassandra
Replication factor = multi
❏ Apache Cassandra
■ Intro
■ Key-value vs Column
■ CAP
■ Partition Key
■ Replication Factor
■ Consistency Level
■ Virtual Nodes
■ Example
❏ Groovy + Cassandra
Consistency Level
❏ Apache Cassandra
■ Intro
■ Key-value vs Column
■ CAP
■ Partition Key
■ Replication Factor
■ Consistency Level
■ Virtual Nodes
■ Example
❏ Groovy + Cassandra
● N = Determina el número n de réplicas que tienen
que validar una lectura
○ N = QUORUM = mayoría simple
Un poquito más complejo...y eficaz
❏ Apache Cassandra
■ Intro
■ Key-value vs Column
■ CAP
■ Partition Key
■ Replication Factor
■ Consistency Level
■ Virtual Nodes
■ Example
❏ Groovy + Cassandra
● Realmente usa virtual nodes
¡No muerde!
❏ Apache Cassandra
■ Intro
■ Key-value vs Column
■ CAP
■ Partition Key
■ Replication Factor
■ Consistency Level
■ Virtual Nodes
■ Example
❏ Groovy + Cassandra
● CREATE TABLE
CREATE TABLE users (
user_name varchar PRIMARY KEY,
password varchar,
gender varchar,
birth_year bigint
);
● SELECT
SELECT * FROM users
WHERE gender = 'male' LIMIT 50000;
● UPDATE
UPDATE users SET password = '123456' WHERE user_name = 'rafbermudez'
❏ Apache Cassandra
❏ Groovy + Cassandra
■ Posibilidades
■ Gorm 5
■ Gorm 5 for Cassandra
CASSANDRA Y GROOVY
● Astyanax Cassandra Java Client (Netflix)
● Datastax Cassandra Java driver
● GORM 5 for Cassandra
○ Basado en últimos drivers de Datastax
○ Soporte para:
■ Grails 2, Grails 3, SpringBoot
■ dynamic finders, criteria and named queries
■ Cassandra schema creation
■ Marshalling from Cassandra to Groovy/Java types and back again
■ ...
Posibilidades
❏ Apache Cassandra
❏ Groovy + Cassandra
■ Posibilidades
■ Gorm 5
■ Gorm 5 for Cassandra
● GORM for Hibernate
○ Soporta Hibernate 3,4 y 5
○ Reescrito basándose en Traits
● GORM for Neo4j
○ Neo4j 2.3.x
○ Mapea “trivialmente” modelos de dominio a grafos
● MongoDB
○ Reescrito basándose en MongoDB 3.x driver
○ Mejora en la conversión: documento <-> objeto
● GORM 5 for Cassandra
GORM 5
❏ Apache Cassandra
❏ Groovy + Cassandra
■ Posibilidades
■ Gorm 5
■ Gorm 5 for Cassandra
● Domain Class
○ Crea un UUID autoincremental internamente
class Person {
String firstName
String lastName
}
new Person(firstName: "Fred", lastName: "Flintstone").save()
● Cassandra e Hibernate
class Person {
UUID id
String firstName
String lastName
static mapping = {
id generator:’uuid2’
}
}
static mapWith = "cassandra"
Clases de dominio
❏ Apache Cassandra
❏ Groovy + Cassandra
■ Posibilidades
■ Gorm 5
■ Gorm 5 for Cassandra
class Person {
String firstName
String lastName
}
● Caso 1: 72% de Juanes en España
def people = Person.findAllByFirstName("Juan")
def people = Person.findAllByFirstName("Juan", [allowFiltering:true])
def people = Person.findAllByFirstName("Juan", [allowFiltering:true, fetchSize: 200])
● Caso 2: Muy pocos Wallys
def wallys = Person.
findAllByFirstNameAndAgeLessThanEquals('Wally', [allowFiltering:true])
def wallys = Person.
findAllByFirstNameAndAgeLessThanEquals('Wally', [allowFiltering:true, max:5])
Crea un índice
Consultas
❏ Apache Cassandra
❏ Groovy + Cassandra
■ Posibilidades
■ Gorm 5
■ Gorm 5 for Cassandra
● FetchSize y AllowFiltering
● No existe offset
● También provee una low-level API
def cassandraTemplate
String personCQL = "SELECT firstName FROM person"
List personList = cassandraTemplate.select(personCQL, Person.class)
Consultas
❏ Apache Cassandra
❏ Groovy + Cassandra
■ Posibilidades
■ Gorm 5
■ Gorm 5 for Cassandra
❏ Apache Cassandra
■ Intro
■ Key-value vs Column
■ CAP
■ Partition Key
■ Replication Factor
■ Consistency Level
■ Virtual Nodes
■ Example
❏ Groovy + Cassandra
■ Posibilidades
■ Gorm 5
■ Gorm 5 for Cassandra
Finished! Thank you!

More Related Content

Viewers also liked

Monitor LED AOC - e970Swn
Monitor LED AOC - e970SwnMonitor LED AOC - e970Swn
Monitor LED AOC - e970SwnAOC vision
 
Bài thực hành số 1
Bài thực hành số 1Bài thực hành số 1
Bài thực hành số 1Lã Văn Hải
 
Search Engine Optimization @ Bergh's School of Communication
Search Engine Optimization @ Bergh's School of CommunicationSearch Engine Optimization @ Bergh's School of Communication
Search Engine Optimization @ Bergh's School of CommunicationSebastian Marmolin
 
Economic Opportunities and Challenges in Rakhine State
Economic Opportunities and Challenges in Rakhine StateEconomic Opportunities and Challenges in Rakhine State
Economic Opportunities and Challenges in Rakhine StateEthical Sector
 
Testen binnen dev ops DTC 2014
Testen binnen dev ops DTC 2014Testen binnen dev ops DTC 2014
Testen binnen dev ops DTC 2014Kaspar van Dam
 
Medina m. storyboard w sound
Medina m. storyboard w soundMedina m. storyboard w sound
Medina m. storyboard w soundMarissa Medina
 
[PLCUG] Hyper converged - Atlantis USX (PL)
[PLCUG] Hyper converged - Atlantis USX (PL)[PLCUG] Hyper converged - Atlantis USX (PL)
[PLCUG] Hyper converged - Atlantis USX (PL)Jaroslaw Sobel
 
Social Media Assessment for Higher Ed Professionals
Social Media Assessment for Higher Ed ProfessionalsSocial Media Assessment for Higher Ed Professionals
Social Media Assessment for Higher Ed ProfessionalsJennifer Keegin
 
Pietro Ichino sulla riforma costituzionale
Pietro Ichino sulla riforma costituzionalePietro Ichino sulla riforma costituzionale
Pietro Ichino sulla riforma costituzionaleAntonino Leone
 

Viewers also liked (15)

Monitor LED AOC - e970Swn
Monitor LED AOC - e970SwnMonitor LED AOC - e970Swn
Monitor LED AOC - e970Swn
 
Slide
SlideSlide
Slide
 
Bài thực hành số 1
Bài thực hành số 1Bài thực hành số 1
Bài thực hành số 1
 
Music video ideas!
Music video ideas!Music video ideas!
Music video ideas!
 
Search Engine Optimization @ Bergh's School of Communication
Search Engine Optimization @ Bergh's School of CommunicationSearch Engine Optimization @ Bergh's School of Communication
Search Engine Optimization @ Bergh's School of Communication
 
Economic Opportunities and Challenges in Rakhine State
Economic Opportunities and Challenges in Rakhine StateEconomic Opportunities and Challenges in Rakhine State
Economic Opportunities and Challenges in Rakhine State
 
Skaters kk
Skaters kkSkaters kk
Skaters kk
 
500 033 prezentaciq android
500 033 prezentaciq android500 033 prezentaciq android
500 033 prezentaciq android
 
Digipak
DigipakDigipak
Digipak
 
Testen binnen dev ops DTC 2014
Testen binnen dev ops DTC 2014Testen binnen dev ops DTC 2014
Testen binnen dev ops DTC 2014
 
Medina m. storyboard w sound
Medina m. storyboard w soundMedina m. storyboard w sound
Medina m. storyboard w sound
 
[PLCUG] Hyper converged - Atlantis USX (PL)
[PLCUG] Hyper converged - Atlantis USX (PL)[PLCUG] Hyper converged - Atlantis USX (PL)
[PLCUG] Hyper converged - Atlantis USX (PL)
 
Social Media Assessment for Higher Ed Professionals
Social Media Assessment for Higher Ed ProfessionalsSocial Media Assessment for Higher Ed Professionals
Social Media Assessment for Higher Ed Professionals
 
Mobile marketing
Mobile marketingMobile marketing
Mobile marketing
 
Pietro Ichino sulla riforma costituzionale
Pietro Ichino sulla riforma costituzionalePietro Ichino sulla riforma costituzionale
Pietro Ichino sulla riforma costituzionale
 

Similar to Gorm for cassandra

José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]RootedCON
 
Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaDavid J. Brenes
 

Similar to Gorm for cassandra (6)

José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]
 
Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de Persistencia
 
Codemotion 2014 Scala @real life
Codemotion 2014 Scala @real lifeCodemotion 2014 Scala @real life
Codemotion 2014 Scala @real life
 
Scala @ Real Life Codemotion 2014
Scala @ Real Life Codemotion 2014Scala @ Real Life Codemotion 2014
Scala @ Real Life Codemotion 2014
 
Intro cassandra
Intro cassandraIntro cassandra
Intro cassandra
 
Lenguaje de programación Ruby
Lenguaje de programación RubyLenguaje de programación Ruby
Lenguaje de programación Ruby
 

More from Rafael Bermúdez Míguez

Dart como alternativa a TypeScript (Codemotion 2016)
Dart como alternativa a TypeScript (Codemotion 2016)Dart como alternativa a TypeScript (Codemotion 2016)
Dart como alternativa a TypeScript (Codemotion 2016)Rafael Bermúdez Míguez
 
Angular 2 for dart mentiras y verdades (Google I/O extended Madrid)
Angular 2 for dart  mentiras y verdades (Google I/O extended Madrid)Angular 2 for dart  mentiras y verdades (Google I/O extended Madrid)
Angular 2 for dart mentiras y verdades (Google I/O extended Madrid)Rafael Bermúdez Míguez
 
Desafío total: cómo resolver retos extremos
Desafío total:  cómo resolver retos extremosDesafío total:  cómo resolver retos extremos
Desafío total: cómo resolver retos extremosRafael Bermúdez Míguez
 
Construyendo tu propia bola de cristal predicción de precios con machine lea...
Construyendo tu propia bola de cristal  predicción de precios con machine lea...Construyendo tu propia bola de cristal  predicción de precios con machine lea...
Construyendo tu propia bola de cristal predicción de precios con machine lea...Rafael Bermúdez Míguez
 
Cross management experiences. mis 7 conclusiones
Cross management experiences.  mis 7 conclusionesCross management experiences.  mis 7 conclusiones
Cross management experiences. mis 7 conclusionesRafael Bermúdez Míguez
 
Piensa en grande: Big data para programadores
Piensa en grande: Big data para programadoresPiensa en grande: Big data para programadores
Piensa en grande: Big data para programadoresRafael Bermúdez Míguez
 
Crea tu propio motor de videojuegos con backbone y canvas (html5)
Crea tu propio motor de videojuegos con backbone y canvas (html5)Crea tu propio motor de videojuegos con backbone y canvas (html5)
Crea tu propio motor de videojuegos con backbone y canvas (html5)Rafael Bermúdez Míguez
 
Xii betabeers galicia todo lo que me hubiera gustado saber cuando abrace el...
Xii betabeers galicia   todo lo que me hubiera gustado saber cuando abrace el...Xii betabeers galicia   todo lo que me hubiera gustado saber cuando abrace el...
Xii betabeers galicia todo lo que me hubiera gustado saber cuando abrace el...Rafael Bermúdez Míguez
 

More from Rafael Bermúdez Míguez (9)

Dart como alternativa a TypeScript (Codemotion 2016)
Dart como alternativa a TypeScript (Codemotion 2016)Dart como alternativa a TypeScript (Codemotion 2016)
Dart como alternativa a TypeScript (Codemotion 2016)
 
Angular 2 for dart mentiras y verdades (Google I/O extended Madrid)
Angular 2 for dart  mentiras y verdades (Google I/O extended Madrid)Angular 2 for dart  mentiras y verdades (Google I/O extended Madrid)
Angular 2 for dart mentiras y verdades (Google I/O extended Madrid)
 
Desafío total: cómo resolver retos extremos
Desafío total:  cómo resolver retos extremosDesafío total:  cómo resolver retos extremos
Desafío total: cómo resolver retos extremos
 
Construyendo tu propia bola de cristal predicción de precios con machine lea...
Construyendo tu propia bola de cristal  predicción de precios con machine lea...Construyendo tu propia bola de cristal  predicción de precios con machine lea...
Construyendo tu propia bola de cristal predicción de precios con machine lea...
 
Cross management experiences. mis 7 conclusiones
Cross management experiences.  mis 7 conclusionesCross management experiences.  mis 7 conclusiones
Cross management experiences. mis 7 conclusiones
 
Piensa en grande: Big data para programadores
Piensa en grande: Big data para programadoresPiensa en grande: Big data para programadores
Piensa en grande: Big data para programadores
 
Acercádonos a dart
Acercádonos a dartAcercádonos a dart
Acercádonos a dart
 
Crea tu propio motor de videojuegos con backbone y canvas (html5)
Crea tu propio motor de videojuegos con backbone y canvas (html5)Crea tu propio motor de videojuegos con backbone y canvas (html5)
Crea tu propio motor de videojuegos con backbone y canvas (html5)
 
Xii betabeers galicia todo lo que me hubiera gustado saber cuando abrace el...
Xii betabeers galicia   todo lo que me hubiera gustado saber cuando abrace el...Xii betabeers galicia   todo lo que me hubiera gustado saber cuando abrace el...
Xii betabeers galicia todo lo que me hubiera gustado saber cuando abrace el...
 

Recently uploaded

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 

Recently uploaded (19)

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 

Gorm for cassandra

  • 2. ¿Y tú? Soy un yonki de Groovy Cassandra, te quiero conocer ¿Cómo he llegado hasta aquí?
  • 3. ❏ Apache Cassandra ■ Intro ■ Key-value vs Column ■ CAP ■ Partition Key ■ Replication Factor ■ Consistency Level ■ Virtual Nodes ■ Example ❏ Groovy + Cassandra APACHE CASSANDRA EN 8 PASOS
  • 4. Intro ❏ Apache Cassandra ■ Intro ■ Key-value vs Column ■ CAP ■ Partition Key ■ Replication Factor ■ Consistency Level ■ Virtual Nodes ■ Example ❏ Groovy + Cassandra ● Sistema NoSQL, distribuído y open source ● Objetivo: Big Data ○ Escalabilidad y Disponibilidad ● Topología en Anillo ○ Masterless ○ Clustering Column ● INSERT Y DELETE ○ INSERT = UPDATE (casi) ● CQL (Cassandra Query Language)
  • 5. Row oriented or column oriented? ❏ Apache Cassandra ■ Intro ■ Key-value vs Column ■ CAP ■ Partition Key ■ Replication Factor ■ Consistency Level ■ Virtual Nodes ■ Example ❏ Groovy + Cassandra ● rows oriented ○ Row id, Columnas diferentes apple -> colour weight price variety "red" 100 40 "Cox" orange -> colour weight price origin "orange" 120 50 "Spain" ● column oriented ○ Column id, 1 fila y millones de columnas temperature -> 2012-09-01 2012-09-02 2012-09-03 ... 40 41 39 ... ● CASSANDRA = rows contain columns!! ○ Idénticas columnas ○ Acceso fila + columna
  • 6. CAP Theorem ❏ Apache Cassandra ■ Intro ■ Key-value vs Column ■ CAP ■ Partition Key ■ Replication Factor ■ Consistency Level ■ Virtual Nodes ■ Example ❏ Groovy + Cassandra ¿Aquí?
  • 7. ● PRIMARY KEY ○ Clave primaria ○ Simple o compuesta ● PARTITION KEY ○ Distribuye los datos por los nodos ○ primary key simple = partition key ○ primary key compuesta = 1er atributo es la partition key ● CLUSTERING COLUMN ○ Define cómo se ordenan los datos en el nodo ○ son los siguientes atributos de una primary key compuesta Distribución de los datos en el anillo ❏ Apache Cassandra ■ Intro ■ Key-value vs Column ■ CAP ■ Partition Key ■ Replication Factor ■ Consistency Level ■ Virtual Nodes ■ Example ❏ Groovy + Cassandra
  • 8. Replication factor = 1 ❏ Apache Cassandra ■ Intro ■ Key-value vs Column ■ CAP ■ Partition Key ■ Replication Factor ■ Consistency Level ■ Virtual Nodes ■ Example ❏ Groovy + Cassandra
  • 9. Replication factor = multi ❏ Apache Cassandra ■ Intro ■ Key-value vs Column ■ CAP ■ Partition Key ■ Replication Factor ■ Consistency Level ■ Virtual Nodes ■ Example ❏ Groovy + Cassandra
  • 10. Consistency Level ❏ Apache Cassandra ■ Intro ■ Key-value vs Column ■ CAP ■ Partition Key ■ Replication Factor ■ Consistency Level ■ Virtual Nodes ■ Example ❏ Groovy + Cassandra ● N = Determina el número n de réplicas que tienen que validar una lectura ○ N = QUORUM = mayoría simple
  • 11. Un poquito más complejo...y eficaz ❏ Apache Cassandra ■ Intro ■ Key-value vs Column ■ CAP ■ Partition Key ■ Replication Factor ■ Consistency Level ■ Virtual Nodes ■ Example ❏ Groovy + Cassandra ● Realmente usa virtual nodes
  • 12. ¡No muerde! ❏ Apache Cassandra ■ Intro ■ Key-value vs Column ■ CAP ■ Partition Key ■ Replication Factor ■ Consistency Level ■ Virtual Nodes ■ Example ❏ Groovy + Cassandra ● CREATE TABLE CREATE TABLE users ( user_name varchar PRIMARY KEY, password varchar, gender varchar, birth_year bigint ); ● SELECT SELECT * FROM users WHERE gender = 'male' LIMIT 50000; ● UPDATE UPDATE users SET password = '123456' WHERE user_name = 'rafbermudez'
  • 13. ❏ Apache Cassandra ❏ Groovy + Cassandra ■ Posibilidades ■ Gorm 5 ■ Gorm 5 for Cassandra CASSANDRA Y GROOVY
  • 14. ● Astyanax Cassandra Java Client (Netflix) ● Datastax Cassandra Java driver ● GORM 5 for Cassandra ○ Basado en últimos drivers de Datastax ○ Soporte para: ■ Grails 2, Grails 3, SpringBoot ■ dynamic finders, criteria and named queries ■ Cassandra schema creation ■ Marshalling from Cassandra to Groovy/Java types and back again ■ ... Posibilidades ❏ Apache Cassandra ❏ Groovy + Cassandra ■ Posibilidades ■ Gorm 5 ■ Gorm 5 for Cassandra
  • 15. ● GORM for Hibernate ○ Soporta Hibernate 3,4 y 5 ○ Reescrito basándose en Traits ● GORM for Neo4j ○ Neo4j 2.3.x ○ Mapea “trivialmente” modelos de dominio a grafos ● MongoDB ○ Reescrito basándose en MongoDB 3.x driver ○ Mejora en la conversión: documento <-> objeto ● GORM 5 for Cassandra GORM 5 ❏ Apache Cassandra ❏ Groovy + Cassandra ■ Posibilidades ■ Gorm 5 ■ Gorm 5 for Cassandra
  • 16. ● Domain Class ○ Crea un UUID autoincremental internamente class Person { String firstName String lastName } new Person(firstName: "Fred", lastName: "Flintstone").save() ● Cassandra e Hibernate class Person { UUID id String firstName String lastName static mapping = { id generator:’uuid2’ } } static mapWith = "cassandra" Clases de dominio ❏ Apache Cassandra ❏ Groovy + Cassandra ■ Posibilidades ■ Gorm 5 ■ Gorm 5 for Cassandra
  • 17. class Person { String firstName String lastName } ● Caso 1: 72% de Juanes en España def people = Person.findAllByFirstName("Juan") def people = Person.findAllByFirstName("Juan", [allowFiltering:true]) def people = Person.findAllByFirstName("Juan", [allowFiltering:true, fetchSize: 200]) ● Caso 2: Muy pocos Wallys def wallys = Person. findAllByFirstNameAndAgeLessThanEquals('Wally', [allowFiltering:true]) def wallys = Person. findAllByFirstNameAndAgeLessThanEquals('Wally', [allowFiltering:true, max:5]) Crea un índice Consultas ❏ Apache Cassandra ❏ Groovy + Cassandra ■ Posibilidades ■ Gorm 5 ■ Gorm 5 for Cassandra
  • 18. ● FetchSize y AllowFiltering ● No existe offset ● También provee una low-level API def cassandraTemplate String personCQL = "SELECT firstName FROM person" List personList = cassandraTemplate.select(personCQL, Person.class) Consultas ❏ Apache Cassandra ❏ Groovy + Cassandra ■ Posibilidades ■ Gorm 5 ■ Gorm 5 for Cassandra
  • 19. ❏ Apache Cassandra ■ Intro ■ Key-value vs Column ■ CAP ■ Partition Key ■ Replication Factor ■ Consistency Level ■ Virtual Nodes ■ Example ❏ Groovy + Cassandra ■ Posibilidades ■ Gorm 5 ■ Gorm 5 for Cassandra Finished! Thank you!