12db
TRANSCRIPT
![Page 1: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/1.jpg)
ucUNIVERSIDAD DE CANTABRIA
Bases de Datos Avanzadas
Bases de datos NoSQL
Parte III: Práctica sobre Apache Cassandra
![Page 2: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/2.jpg)
Roberto Amor Marcos
![Page 3: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/3.jpg)
Contenidos
• Requisitos y material
• Instalación
• El framework Easy-Cassandra
• Bibliografía
![Page 4: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/4.jpg)
Requisitos y material
• Elementos necesarios para realizar la práctica:
• Java 1.6 o 1.7 (Java JDK 6 o 7)• http://www.oracle.com/technetwork/java/javase/downloads/index.html
• Apache Cassandra 1.0.6-bin (no usar 1.0.8!!! bug en
Windows)• http://archive.apache.org/dist/cassandra/1.0.6/apache-cassandra-1.0.6-bin.tar.gz
• XAMMP for Windows (u otro gestor que incluya
Apache WebServer) - Opcional (necesario para Cassandra Cluster Admin)• http://www.apachefriends.org/en/xampp-windows.html
• Cassandra Cluster Admin - Opcional pero
recomendado• https://github.com/sebgiroux/Cassandra-Cluster-Admin/zipball/master
![Page 5: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/5.jpg)
• Eclipse• http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr2
• Easy-Cassandra with Dependences
• https://github.com/downloads/otaviojava/Easy-Cassandra/EasyCassandra-1.0.8-With_Depencence.rar
![Page 6: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/6.jpg)
Instalación
• Una vez instalada la última versión de Java JDK hay que añadir una variable de entorno con el JAVA_HOME.
Propiedades del sistema
Restaurar sistema Actualizacionesautomáticas Remoto
General Nombrede equipo Hardware f.·.·.·.·...·.g·.é.~.?. ~.~.~·.·.~.~.~.~.~~ª·~·~.·.·.·.·.·JDebe iniciarla sesión como un Administradopr ara hacer la mayoríade los cambios.Rendimiento--==============-===="""""===11
Efectos visuales, programacióndel procesador, uso de memoriaymemoriavirtual
~onfiguración
Perfilesde usuario---------------------..,
Configuarción del escritoriorelacionada con su iniciode sesión
C.Qnfigaucrión
Inicioy recuperación---------------------,'
Iniciode sistema, errorde sistema e informaciónde depuración
Configuarción
'Y.. ariablesde entorno informede errores
Aceptar Cancelar
WinXP : Propiedades de MiPC
![Page 7: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/7.jpg)
---
Instalación• Panel de control • • Sistema
• Una vez instalada la última versión de Java JDK hay que añadir
entana principal del Panel de ropiedades de i e
una vconatrorl
iable de entorno con el JAVA_HOME.
dministrador de dispositi os
Configuración de cceso
1I Nombre de equipoOpciones avanzadas l Protección del
sistema
Hard 'are
J Acceso remoto
remoto
Protección del sistema
Configuración avanzada del sistema
Para realizar la mayoría de estos cambios. inicie sesión como administrador.
Rendimiento
8edos visuales. programación del procesador. uso de memoriaymemoriavirtual
[ Configuración... ]
Perfilesde usuario
Configuración del escritorio correspondiente al inicio de sesión
Configuración...
Inicio y recuperación
Inicio del sistema. errores del sistema e información de depuración
,80 GHz
Win7 : Propiedades de Equipo >
Configuración
avanzada
![Page 8: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/8.jpg)
del sistemaConfiguración...
Variables de entomo
...
eptar )! Cancelar )! rcar
le para esta pantalla
![Page 9: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/9.jpg)
Instalación
• Una vez instalada la última versión de Java JDK hay que añadir una variable de entorno con el JAVA_HOME.
Variables de entorno
Variables de usueno para Jorge Ruiz
Variable TEMP TMP
--~ ValorC: \Documents end Settings\Jorge RUiz\ . C: \Documents end Settings\Jorge Ruiz\ .
Mueva Modificar Eliminar
Variables del ~istema
Variable Valor
Nur'''1BER OF F'", 2OSPathPATHEXT PROCESSOR_A ...
Windows_NTC :\WINDOWS\system32;C: \ WINDOWS j .••
.COM; .EXEj •BAT; .CMDj •VBSj •VBEj •JS; ....x86
Nuey_a MOQificar ~liminar
Aceptar Cancelar
![Page 10: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/10.jpg)
Instalación
• Una vez instalada la última versión de Java JDK hay que añadir una variable de entorno con el JAVA_HOME.
Nueva variable del sistema ?
Mombre de variable:
~alor de variable:
JAVA_HOME
C:\Archivos de programa \Jav a\jdk1. 6.
0_1E Aceptar Cancelar
Normalmente instalado en C:\Archivos de programa\Java\jdk1.
{version}.0_{revision}
![Page 11: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/11.jpg)
Instalación
• Una vez instalada la última versión de Java JDK hay que añadir una variable de entorno con el JAVA_HOME.
Probar la definición de la variable desde el cmd echo %JAVA_HOME%
![Page 12: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/12.jpg)
Instalación
• Descomprimir Cassandra en C:\Cassandra
• Abrir C:\Cassandra/conf/cassandra.yaml
• Reconfigurar la ruta de data_file_directories,commitlog_directory y saved_caches_directory
• Abrir C:\Cassandra/conf/cassandra-env.sh
• Reducir el tamaño del HEAP de Java por (y descomentar la línea!!):
• MAX_HEAP_SIZE=”1GB”
• HEAP_NEWSIZE=”800MB”
![Page 13: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/13.jpg)
eornmi
saved cac es_direc-ory: C:\Cassa dra/saved
Instalación
• Descomprimir Cassandra en C:\Cassandra
• Abrir C:\Cassandra/conf/cassandra.yaml
t See ://wi·i.a,ac e org/cassandra/Opera ions tor more o
• Reconfigaur
iraiornelras arud
tao edn
eseldecaitona._file_directories,par i ioner~ org a ac.e.cassandra.d ~.RandomPar i~ioner
commitdlireoc
gor_ieds
ire
ree
cCatssaond
rraysyo
sIdasvoree
dda_acoacdihs.es_directoryda a file diree ories·
- C. Cassa dra/da a
• Abrir C:\Cassandra/conf/cassandra-env.shcornmiIog_diree ory. C:\Cassandra/cornmi 10g
• Reducirsaeveldtcaame.esaño del HEAP de Java por (y descomentar la línea!!):
• MAX_HEAP_SIZE=”1GB”
![Page 14: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/14.jpg)
• HEAP_NEWSIZE=”800MB”
![Page 15: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/15.jpg)
Instalación
• Desde el cmd ir a la ruta C:\Cassandra/bin y ejecutar:
• cassandra -f
![Page 16: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/16.jpg)
Instalación
• Desde el cmd ir a la ruta C:\Cassandra/bin y ejecutar:
• cassandra -fAdm' istrador. C:
![Page 17: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/17.jpg)
Instalación
• Una vez conectados crear un keyspace de prueba
con:
• create keyspace practicaCassandra;
• Y asignar la conexión actual al nuevo keyspace:
• use practicaCassandra;drni istradon C: .e e - cessendra-c i -h localhost -p 9160
![Page 18: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/18.jpg)
Instalación
• XAMPP normalmente se instala en C:\XAMPP
• Crear una carpeta dentro de C:\XAMPP\htdocs (esta es la carpeta de los ficheros web) llamada cca
•Descomprimir el contenido de sebgiroux-Cassandra- Cluster-Admin en cca
•Activar el servidor Apache desde el Panel de
Control deXAMPP
![Page 19: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/19.jpg)
• Probar la instalación accediendo desde el
navegador:
•http ://lo calhost /c ca
![Page 20: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/20.jpg)
•
Modules
Instalación
• XAMPP normalmente se instala en C:\XAMPPXA PPCo trol Panel Applicatio l
Crear una carpeta dentro de C:\XAMPP\htdocs (esta es
XAMPP Control Panel Service... I I SCM...
la carpeta de los ficheros web) llamada ccaStatus
[JSvc Apache Running Stop I ! Refresh
• Descomprim[]iS
rvc
el cfVo1yS
nql
tenidoStart
dIeIsebgiExp
rloreo...
ux-Cassandra-
[JSvc FileZilla Start I I Help
Cluster-AdLJsmvc inMercuery n cca Start I I dmin ..• 1 Exit
DSvc Tomcat Start ) I dmin ..• )
• Activar el serXAvMPPidConotrorl
Apearscio
hn 2e_5 d(1
6e_s~adrch,e20e11)l Panel de
Control deXAMPP
lindows 6_1 Build 600 Plat=orm 2Current irectory: c: xampp Install(er) Jirectory: c: xa~~p Status Check KBusy _
Apache started [Part 80]
![Page 21: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/21.jpg)
• Probar la instalación accediendo desde el
navegador:
• http ://lo calhost /c ca
![Page 22: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/22.jpg)
• XAMPP normalmente se instala en C:\
Instalación
~ ~ Disco local (C:) ~ xampp ~ htdocs ~ cca ~
en biblioteca ,., Compartir con ,., Grabar Nueva carpetaA
Nombre Fecha de modifica ... Tipo Tamaño
• Crear unacsscarpeta dentro d29/0e3/201C216::37\XACarpeMta de ParchPivos \htdocs (esta es
helper 29/03/2012 16:37 Carpeta de archivosla carpetaImdg
s
e los ficheros w29 0e3/2b012)16:3l7 lamCarpaeta dde aarchivcos ca
inelude 29,03/201216:37 Carpeta de archivos
JS 29/03/2012 16:37 Carpeta de archivos
• Descomprvieiw
ms
ir el contenid29o/03/2d012e16:
3s7
ebCar
pgeta
ide arrchiovos ux-Cassandra-
AUTHORS 29/03 '2012 16:37 Archivo 1 KB
Cluster-elusAter_idnfo.pmhp in en cca29/03/201216:37 Archivo PHP 1 8
col u m nfam ily_acti o n. ph p 29,03/201216:37 rchivo PHP 30 KB
counters.php 29 '03/201216:37 rchivo PHP 2 KB
• Activar eldesscreibe_rcovlumnifadmilyo.phpr Apach2e9/03d/201e216s:37de Aerchli 'oPPHaP
nel de3
KCaontrol de
![Page 23: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/23.jpg)
XAMPP
d esc rib e_keysp a c e. ph p 29/03/201216:37 rchi 'o PHP 3 a
index.php 29/03/2012 16:37 rchivo PHP 2 Ka
jmx.php 29/03/201216:37 Archivo PHP 7
KB keyspace_action.php 29/03 ''201216:37 rchivo PHP 12
Ka
UCENSE 29/03/201216:37 Archivo 2 a
![Page 24: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/24.jpg)
• Probar la ilongin.pshptalación acced29,i03e/20n1216d:37o drechisvo
dPHPe el nav1 Ke8
logout.php 29/03/201216:37
![Page 25: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/25.jpg)
rchi o PHP 1 KB
README.mkd 29 03/201216:37 rchivo MKD 5 Ka
• http://localhost/ccagador:
![Page 26: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/26.jpg)
• Crear una carpeta dentro de C:\XAMPP\htdocs
•
Instalación~ Cassandra Cluster Admin x (i) start_sample_easycassandra . otavioja... (i)
Cassandra Cluster Admin
• XAMPP normalmente se instala en C:\XAMPP
Cluster Name= Test Cluster
Cluster Partitioner: org.apache.cassandra.dht.RandomPartitionerCluster Snitch: org.apache.cassandra.locator.SimpleSnitchThrift API Version: 19.1 9.0
la carpeta de SlchoemasVersfiion:c2fhee79e70-7rdao1-11s
[o
ew1-0000e-24b2d5)0cf1llfadd mada cca
• DescomprimKieyrspaecels
acndoConlumtneFnamiilieds
• ¡avabahia
o de sebgiroux-Cassandra-
Cluster-Admio
pnerson
en ccao Nodeldlnfoo Versionso Indexlnfo
• Activar el servido Sochemra Apache desde el Panel de Control deXAMP P
![Page 27: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/27.jpg)
• See
o Migrationso locationlnfoo HintsColumnFamily
• praaicaCassandra
• DEMOo Userso person
• prueba
• Probar la instalao Ucseir ón accediendo desde el navegador:o User2
JMX
• http://localhost/cca
![Page 28: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/28.jpg)
Instalación
• Descomprimir donde se quiera todos los .jar contenidos en el .rar de “Easy-Cassandra with Dependences”
•En Eclipse crear un nuevo proyecto Java y añadir todas las librerías descomprimidas desde:
• Build Path>Configure BuildPath...>Libraries>Add External JARs...
![Page 29: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/29.jpg)
Easy-Cassandra
• Easy-Cassandra es un framework para
trabajar conCassandra desde el lenguaje de alto nivel Java.
•Aprovecha las propiedades orientadas a objetos de Java para relacionar clase con ColumnFamily.
•Cada clase se corresponde con una familia de columnas.
•Cada atributo se corresponde con una
columna.
![Page 30: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/30.jpg)
•Un atributo especial se declara como KEY
paraCassadra.
![Page 31: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/31.jpg)
Easy-Cassandra
•Para una correcta sincronización entre los tipos de dato string (UTF-8 o Hexadecimal) hay que indicar a Cassandra cómo queremos que estén codificadasnuestras familias de columnas.
create column family GroupInvitation with comparator = UTF8Type andcolumn_metadata = [{column_name: iduser, validation_class: UTF8Type},{column_name: idgroup, validation_class: UTF8Type},{column_name: text, validation_class: UTF8Type},{column_name: created, validation_class: UTF8Type}];
![Page 32: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/32.jpg)
Easy-Cassandra
•Se utilizan metadatos o anotaciones en las clases Java a las que se van a dar persistencia.
@ColumnFamilyValue(name = "Persona")public class Persona implements Serializable {...}
@ColumnValue(name = "edad") •private Integer edad;
@IndexValue@ColumnValue(name = "nombre")private String nombre;
@KeyValue(auto=false) I
private Long id;
![Page 33: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/33.jpg)
Easy-Cassandra
• Para obtener una conexión hacia la base de datos hay que crear un enlace mediante la clase Persistence
Persistence persistence;persistence = EasyCassandraManager.getPersistence("keyspace", "localhost", 9160);
![Page 34: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/34.jpg)
boolean success persistence.insert(object);
boolean success persistence.delete(object);
boolean success persistence.deleteByKeyValue(rowKey,
Easy-Cassandra
•Una vez realizada la conexión, el objeto persistance ofrece los siguientes métodos para la manipulación de los datos.
=
=
=Persona.class);
b~o-ol-e-an--su-cc-e-ss--= -p-er-s-is-te-n-ce-.-up-d-at-e(-o-bj-e-ct-)-; ------~l
Comandos de actualización
![Page 35: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/35.jpg)
Easy-Cassandra
•Una vez realizada la conexión, el objeto persistance ofrece los siguientes métodos para la manipulación de los datos.
List<Persona> list =persistence.findAll(Persona.class); List<Persona> list =persistence.findAll(Persona.class, 15000);
Persona result=(Persona)persistence.findByKey(idValue, Persona.class);
List<Persona> list=persistence.findByKeyIn(Persona.class,1,4,8);
Long numberOfRow=persistence.count(Persona.class);-- -- -- -----
Comandos de consulta
![Page 36: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/36.jpg)
Easy-Cassandra
• Easy-Cassandra ofrece un segundo modo de manipulación de los datos en Cassandra: ejecutando directamente sentencias CQL.
• Pueden realizarse de manera independiente a la estructura de objetos de la aplicación.
• Pueden aparecer algunos problemas entre los
tipos string.
boolean persistence.executeUpdateCql(String query);
![Page 37: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/37.jpg)
, \List<Map<String, String>> result=persistence.executeCql(String SelectQuery);
--- ----- -
- -
![Page 38: 12DB](https://reader035.vdocuments.net/reader035/viewer/2022062512/552b54f1550346d6478b4675/html5/thumbnails/38.jpg)
Referencias
http://cloud.github.com/downloads/otaviojava/Easy-Cassandra/UserGuide-EasyCassandra_002.pdf - Easy-Cassandra UserGuide.