12db
TRANSCRIPT
ucUNIVERSIDAD DE CANTABRIA
Bases de Datos Avanzadas
Bases de datos NoSQL
Parte III: Práctica sobre Apache Cassandra
Roberto Amor Marcos
Contenidos
• Requisitos y material
• Instalación
• El framework Easy-Cassandra
• Bibliografía
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
• 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
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
---
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
del sistemaConfiguración...
Variables de entomo
...
eptar )! Cancelar )! rcar
le para esta pantalla
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
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}
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%
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”
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”
• HEAP_NEWSIZE=”800MB”
Instalación
• Desde el cmd ir a la ruta C:\Cassandra/bin y ejecutar:
• cassandra -f
Instalación
• Desde el cmd ir a la ruta C:\Cassandra/bin y ejecutar:
• cassandra -fAdm' istrador. C:
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
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
• Probar la instalación accediendo desde el
navegador:
•http ://lo calhost /c ca
•
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]
• Probar la instalación accediendo desde el
navegador:
• http ://lo calhost /c ca
• 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
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
• Probar la ilongin.pshptalación acced29,i03e/20n1216d:37o drechisvo
dPHPe el nav1 Ke8
logout.php 29/03/201216:37
rchi o PHP 1 KB
README.mkd 29 03/201216:37 rchivo MKD 5 Ka
• http://localhost/ccagador:
• 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
• 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
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...
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.
•Un atributo especial se declara como KEY
paraCassadra.
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}];
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;
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);
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
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
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);
, \List<Map<String, String>> result=persistence.executeCql(String SelectQuery);
--- ----- -
- -
Referencias
http://cloud.github.com/downloads/otaviojava/Easy-Cassandra/UserGuide-EasyCassandra_002.pdf - Easy-Cassandra UserGuide.