Presentacion sobre cassandra
Upcoming SlideShare
Loading in...5
×
 

Presentacion sobre cassandra

on

  • 1,981 views

Rapida presentación sobre cassandra

Rapida presentación sobre cassandra

Statistics

Views

Total Views
1,981
Views on SlideShare
1,008
Embed Views
973

Actions

Likes
1
Downloads
44
Comments
0

4 Embeds 973

http://jesusnoseq.com 969
http://webcache.googleusercontent.com 2
http://jesusnoseq.nixiweb.com 1
http://www.google.es 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Presentacion sobre cassandra Presentacion sobre cassandra Presentation Transcript

  • Cassandra [Parte práctica] Base de Datos NoSQL clave/valor___________________________________________________________________________ Jesús Rodríguez Pérez
  • Modelo de datos de CassandraAntes de empezar con el diseño de una base datos en cassandra debemos almenos repasar los conceptos básicos de su modelo de datos. ● Cluster: nodos que ejecutan una instancia de Cassandra, estos pueden contener varios keyspaces. ● Keyspace: un espacio de nombres que permite agrupar varias ColumnFamilies. Sería el equivalente a una BBDD en el modelo relacional. ● ColumnFamily: puede contener varias columns. Sería equivalente a una tabla en el modelo relacional. No todas las filas de una ColumnFamily tienen el porque tener el mismo número de columnas. Cada fila se identifica por su row key ● Column: unidad básica de almacenamiento. Están compuestas por name, value y timestamp. ● SuperColumn: son columnas que pueden almacenar otras columnas. No se suelen utilizar.Será necesario también conocer cómo funcionan los índices ya que estos nospermiten hacer consultas más complejas.
  • Diseño de una BD NoSQL
  • Creando estructurasCrear el keyspacecreate keyspace Comercio with placement_strategy= org.apache.cassandra.locator.SimpleStrategy and strategy_options={replication_factor:1};Una vez creado la indicamos que vamos atrabajar con dicho keyspace.use Comercio;
  • Creando estructuras(2)Una familia de columnascreate column family usuario with comparator=UTF8Type andkey_validation_class=IntegerType anddefault_validation_class=UTF8Type andcolumn_metadata =[ {column_name: nombre, validation_class: UTF8Type}, {column_name: mail, validation_class: UTF8Type}, {column_name: pais, validation_class: UTF8Type, index_type: KEYS}, {column_name: fechaIngreso, validation_class: DateType}];
  • Consultando datos Row key ColumnFamily Columnget usuario[1][mail]; Solo si hemos creado elget usuario[1]; índice.list usuario;get venta where pagada=false;list producto limit 3;
  • Insertando datosset usuario[1][nombre] = Jesus; Un usuarioset usuario[1][mail] = jesus@mail.net;set usuario[1][fechaIngreso]=2012-05-12;set usuario[1][trololo]=yes;set IdPorMail[jesus@mail.net][keyUsuario]=1; Un productoINCR login_counter[1][login] BY 0;set producto[product1][nombre]=aceite oliva; Una ventaset venta[1][keyUsuario]=1;set venta[1][pagada]=false;set venta[1][product1]=5;set venta[1][pagada]=false;
  • Borrandodel usuario[3][mail];del usuario[3];drop index on usuario.pais;drop column family usuario;drop keyspace comercio;
  • Introducción a CQLCreación de estructuras CREATE KEYSPACE tpv WITH strategy_class = NetworkTopologyStrategy AND strategy_options:DC1 = 2 AND strategy_options: DC2 = 2; CREATE COLUMNFAMILY usuarios( ID uuid PRIMARY KEY, nombre varchar, password varchar, mail varchar ) WITH replicate_on_write=true AND default_validation=varchar AND comparator=varchar;
  • Introducción a CQL(2)Inserción y consulta INSERT INTO usuarios (ID, nombre, mail) VALUES (1, jesus, jesus@mail.net) USING CONSISTENCY LOCAL_QUORUM AND TTL 600; SELECT nombre, mail FROM usuarios; SELECT * FROM usuarios; SELECT * FROM producto WHERE referencia in (product1, product2);
  • Introducción a phpcassaDespués de instalar Cassandra(la distribuciónde Datastax Community Edition), apache2 yPHP5 ahora toca phpcassa.Simplemente nos descargamos phpcassa y lodescomprimimos en un directorio accesible porapache.Para cargarla solo tenemos que poner:require_once(__DIR__./../lib/autoload.php);
  • Introducción a phpcassa(2)Y un poco más de código para usarlaConexiónuse phpcassaConnectionConnectionPool;use phpcassaSystemManager;$sys = new SystemManager(127.0.0.1);$pool = new ConnectionPool(Comercio, array(127.0.0.1));// ...// ...$pool->close();$sys->close();
  • Introducción a phpcassa(2)Consultas simplesuse phpcassaColumnFamily;$usuario = new ColumnFamily($pool, usuario);$IdPorMail = new ColumnFamily($pool, IdPorMail);$user1 = $usuario->get(1);$nombre = $user1["nombre"];echo "Usuario $nombre";$id=$IdPorMail->get($user1["mail"]);echo $id["keyUsuario"];
  • Introducción a phpcassa(3)Consultas algo más complejasuse phpcassaColumnSlice;use phpcassaIndexIndexExpression;use phpcassaIndexIndexClause;$venta = new ColumnFamily($pool, venta);$producto = new ColumnFamily($pool, producto);$n=$venta->get_count(1);echo $n;$index_KeyUser = new IndexExpression(keyUsuario, 1);$index_pay = new IndexExpression(pagada, false);$index_clause = new IndexClause(array($index_KeyUser ,$index_pay));$rows = $venta->get_indexed_slices($index_clause);foreach($rows as $key => $columns) { Print_r($columns);}
  • Thrift y otros clientesThrift es un conjunto de herramientas ylibrerías que permite crear interfacesgenéricas con las que podemosgenerar todo el código necesario parautilizarlo en otros lenguajes. thrift --gen <language> <Thrift filename>
  • Herramientas de administración gráficas● Cassandra-Cluster-Admin El equivalente a phpMyAdmin https://github.com/sebgiroux/Cassandra-Cluster-Admin● OpsCenter Viene en con Datastax Comunity Edition. Es el más completo, muestra estadísticas de rendimiento de los nodos... http://www.datastax.com/products/opscenter● Cassandra-gui De forma bastante simple permite administrar Cassandra. http://code.google.com/a/apache-extras.org/p/cassandra-gui/
  • Para seguir aprendiendo● Tutorial sobre CQL● Una serie de tutoriales de un blog● Grupo de NoSQL de google● Tutorial sobre Hector● Blog● Post sobre cassandra en C++● Casos prácticos de clientes● NosqlTape (entrevistas)● Videotutoriales de Cassandra
  • ¿PREGUNTAS?
  • Bonus Track: SupercolumnasCreación create column family pruebaSuper with comparator=UTF8Type and key_validation_class=UTF8Type and default_validation_class=UTF8Type and column_type = Super and subcomparator = UTF8Type and column_metadata =[ {column_name: supercol, validation_class: UTF8Type} ];
  • Bonus Track: Super columnasInserciónset pruebasuper[1][supercol1][col]=1-1-1;set pruebasuper[1][supercol1][col2]=1-1-2;set pruebasuper[key][supercol2][col2]=2-2;set pruebasuper[esto][es][free]=style;
  • Bonus Track: Super columnasConsultasget pruebasuper[1];Listar las filas list pruebasuper;