12DB

Post on 13-Apr-2015

12 views 0 download

Transcript of 12DB

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.