KELA Presentacion Costa Rica 2024 - evento Protégeles
Intro cassandra
1. Introducción a
Ingenieria de Sotware I – Cohorte 2010
Ing. Liliana Paradas
Ing. William Yánez
2. Introducción
● Es un sistema de administración de base de datos
distribuida, open source, diseñado para manejar grandes
cantidades de datos.
● Se autodefine como “Altamente escalable, eventualmente
consistente, distribuida y basada en datos clave-valor”.
● Es una solución NoSQL, inicialmente desarrollada por
Facebook (liberado en julio 2008) y desde Marzo 2009 es
un proyecto de la fundación Apache (Feb 17 2010 top-
level).
● Esta basada en BigTable (Módelo de Datos) y Amazon
Dynamo (infraestructura).
● Desarrollado en Java.
3. Características
● Probado
● Digg, Facebook, Twitter, entre otros
● Descentralizada
● Todos los nodos de uncluster son identicos. No hay “Single Point of
Failure” (SPOF)
● Tolerante a fallas
● La data es automáticamente replicada a todos los nodos.
● Elasticidad
● El incremento del rendimiento es lineal a la cantidad de nodos
agregados al cluster (sin downtime).
● Modelo de Datos Eficiente y Simple => clave/valor
4. Modelo de Datos
● Columnas:
● Es una tripleta que contiene un nombre, un valor y un
timestamp.
{
"name": "emailAddress",
"value": "foo@bar.com",
"timestamp": 123456789
}
● Son referenciadas por un row-key.
● Es el tipo de datos básico de Cassandra.
5. Modelo de Datos
● Familias de Columnas:
● Contiene múltiples Columnas, cada familia de columnas es
almacenada en un archivo separado
● SuperColumnas:
● Columnas que contienen otras columnas.
● Keyspace:
● Agrupa las Familias de Columnas, tipicamente uno por aplicación
● Cluster
6. Comparación con RDBMS
● Con 50 Gb
● MySQL lee en +o- 350 ms
● MySQL escribe en +o- 300 ms
● Cassandra escribe en 0.12 ms
● Cassandra lee en 15 ms
7. Instalación y Puesta en Marcha
1) Descargar la ultima versión (0.5.1 actual)
● Web oficial: http://cassandra.apache.org/
2) Descomprimimos en cualquier carpeta.
3) Creamos el directorio de datos y de log por defecto:
● sudo mkdir -p /var/log/cassandra
● sudo mkdir -p /var/lib/cassandra
● sudo chown -R usuario /var/lib/cassandra
● sudo chown -R usuario /var/log/cassandra
4) Ejecutamos con: bin/cassandra -f
8. Instalación y Puesta en Marcha
1) Descargar la ultima versión (0.5.1 actual)
● Web oficial: http://cassandra.apache.org/
2) Descomprimimos en cualquier carpeta.
3) Creamos el directorio de datos y de log por defecto:
● sudo mkdir -p /var/log/cassandra
● sudo mkdir -p /var/lib/cassandra
● sudo chown -R usuario /var/lib/cassandra
● sudo chown -R usuario /var/log/cassandra
4) Ejecutamos con: bin/cassandra -f
● Ver conf/storage-conf.xml
9. Conectandonos a Cassandra
Usamos la herramienta cassandra-cli:
Para correrla escribimos en la consola:
$ bin/cassandra-cli --host localhost --port 9160
Connected to localhost/9160
Welcome to cassandra CLI.
Type 'help' or '?' for help. Type 'quit' or 'exit' to quit.
10. Conectandonos a Cassandra
cassandra> set Keyspace1.Standard1['wyanez']['nombre']='William'
Value inserted.
cassandra> set Keyspace1.Standard1['wyanez']['apellido']='Yanez'
Value inserted.
cassandra> set Keyspace1.Standard1['wyanez']['edad']='39'
Value inserted.
cassandra> set Keyspace1.Standard1['wyanez']['tlf1']='0426-5529140'
Value inserted.
cassandra> get Keyspace1.Standard1['wyanez']
=> (column=tlf1, value=0426-5529140, timestamp=1269577777158)
=> (column=nombre, value=William, timestamp=1269577730679)
=> (column=edad, value=39, timestamp=1269577764734)
=> (column=apellido, value=Yanez, timestamp=1269577754462)
Returned 4 results.
11. Y los Lenguajes de Programación ?
● Ruby (http://github.com/fauna/cassandra/tree/master)
● Perl
● Python
● Java
● Php
● C++
● C# /. Net
● Otros: Scala, Clojure, Grails.
● Todos usan la API Thrift (bajo nivel)
12. Ruby & Cassandra
● http://github.com/fauna/cassandra/tree/master
● gem install cassandra
● Y listo... veamos ahora el queso a la tostada