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!

Más contenido relacionado

PDF
Rails 101
PPTX
2) How effective is the combination of your main product and ancillary texts?
PPTX
Identificación de cromosoma Y en raíz de cabello
PPTX
Art nouveau
PDF
Acquisition retention loyalty in proper proportion to maximize profitability
PPTX
Wedding Venues in Dallas Design District - Seven for Parties
PPT
Pengantar Teknologi Informasi
PDF
Turms Assembled Ed Presentation
Rails 101
2) How effective is the combination of your main product and ancillary texts?
Identificación de cromosoma Y en raíz de cabello
Art nouveau
Acquisition retention loyalty in proper proportion to maximize profitability
Wedding Venues in Dallas Design District - Seven for Parties
Pengantar Teknologi Informasi
Turms Assembled Ed Presentation

Destacado (15)

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

Similar a Gorm for cassandra (20)

PDF
BigData - NoSQL
PDF
PPTX
Cassandra
PDF
Presentacion sobre cassandra
PDF
No-SQL Databases
PPTX
Apache cassandra
PPTX
NO SQL y Cassandra
PPTX
TUTO CASSANDRA LC
PPTX
Apache Cassandra
PDF
Intro cassandra
PPTX
Nosql y cassandra
PPTX
Cassandra Instalacion y Utilizacion
PPTX
Apache cassandra Jordan Vizcaino 3° INF DON BOSCO!
PPTX
Apache cassandra
PPTX
NoSQL Cassandra
PPTX
No sql la nueva era
PPTX
Diaposotivas apache-cassandra
PPTX
NOSQL apache-cassandra-150611122739-lva1-app6891
DOCX
Cassandra y php para desarrolladores sql
PPTX
Apache Cassandra
BigData - NoSQL
Cassandra
Presentacion sobre cassandra
No-SQL Databases
Apache cassandra
NO SQL y Cassandra
TUTO CASSANDRA LC
Apache Cassandra
Intro cassandra
Nosql y cassandra
Cassandra Instalacion y Utilizacion
Apache cassandra Jordan Vizcaino 3° INF DON BOSCO!
Apache cassandra
NoSQL Cassandra
No sql la nueva era
Diaposotivas apache-cassandra
NOSQL apache-cassandra-150611122739-lva1-app6891
Cassandra y php para desarrolladores sql
Apache Cassandra
Publicidad

Más de Rafael Bermúdez Míguez (9)

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

Último (20)

DOCX
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PPTX
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
DOCX
Guía 5. Test de orientación Vocacional 2.docx
DOCX
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
PPTX
ccna: redes de nat ipv4 stharlling cande
PPTX
Presentación final ingenieria de metodos
PPTX
Sistema de Gestión Integral TCA Ingenieros.pptx
PDF
MANUAL de recursos humanos para ODOO.pdf
PPTX
la-historia-de-la-medicina Edna Silva.pptx
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
PPTX
El uso de las TIC en la vida cotidiana..
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PPTX
Curso de generación de energía mediante sistemas solares
PDF
Teoría de estadística descriptiva y aplicaciones .pdf
PPTX
Uso responsable de la tecnología - EEST N°1
PDF
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
PPTX
Formato de texto, párrafo, documentos, columnas periodísticas, referencias.
PDF
Estrategia de apoyo valentina lopez/ 10-3
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
Historia Inteligencia Artificial Ana Romero.pptx
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
Guía 5. Test de orientación Vocacional 2.docx
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
ccna: redes de nat ipv4 stharlling cande
Presentación final ingenieria de metodos
Sistema de Gestión Integral TCA Ingenieros.pptx
MANUAL de recursos humanos para ODOO.pdf
la-historia-de-la-medicina Edna Silva.pptx
Estrategia de Apoyo de Daylin Castaño (5).pdf
informe_fichas1y2_corregido.docx (2) (1).pdf
El uso de las TIC en la vida cotidiana..
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
Curso de generación de energía mediante sistemas solares
Teoría de estadística descriptiva y aplicaciones .pdf
Uso responsable de la tecnología - EEST N°1
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
Formato de texto, párrafo, documentos, columnas periodísticas, referencias.
Estrategia de apoyo valentina lopez/ 10-3

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!