Cloud Computing: las nuevas Capas de Persistencia

37

Click here to load reader

description

Uno de los primeros problemas con que debemos lidiar en la Web 2.0 es la recuperación de datos para el usuario. ¿Qué nuevas capas de persistencia han sido desarrolladas para hacer frente al reto? En las transparencias se hace una muy leve introducción a Apache CouchDB y Amazon SimpleDB. Estas transparencias están basadas en unas confeccionadas por mi para un curso sobre Cloud Computing.

Transcript of Cloud Computing: las nuevas Capas de Persistencia

Page 1: Cloud Computing: las nuevas Capas de Persistencia

Cloud Computing:

Nuevas capas de persistencia

Page 2: Cloud Computing: las nuevas Capas de Persistencia

El problema

Page 3: Cloud Computing: las nuevas Capas de Persistencia

El problema Escenario

o La Web 2.0 es todo datos• Perfiles de usuario• Mensajería• Datos de terceros (grupos musicales, libros…)• Datos emegentes (gustos)• La Web 2.0 se basa en un gran número de datos

– > 20 tweets cada 2 segundos– > 600 tweets / minuto– > 36000 tweets / hora– > 864000 tweets / dia

Page 4: Cloud Computing: las nuevas Capas de Persistencia

BBDD Orientadas a Documentos Bases de Datos Relacionales

o MySQL, PostgreSQL, SQL Server, Oracle…

o Propósito más general => No dedicados a la escalabilidad

o Estructuras de datos (esquemas) más estrictas

• Más seguridad.• Más posibilidades.• Más sobrecarga.

o Funcionalidad distribuida como anexo.

Necesidad de otro tipo de capa de persistencia

Page 5: Cloud Computing: las nuevas Capas de Persistencia

BBDD Orientadas a Documentos BBDD Orientadas a Documentos

Basado en la metáfora de la hoja de cálculo de Amazon

o Base de datos => Conjunto de documentos

o Documento => Conjunto de pares clave/valor

Page 6: Cloud Computing: las nuevas Capas de Persistencia

BBDD Orientadas a Documentos BBDD Orientadas a Documentos

o Uso intensivo de pares clave valor:• Base de Datos = {identificador, documento}• Documento = {nombre de campo, valor de campo}

o Pueden ser vistas como tablas hash

o Pares clave valor• Muy usados en cloud computing• Un buen ejemplo: El algoritmo Map / Reduce

Page 7: Cloud Computing: las nuevas Capas de Persistencia

BBDD Orientadas a Documentos BBDD Orientadas a Documentos

o Optimizadas para datos accedidos mediante clave primaria.

o Sin esquema• Más eficiente.• Menos mantenible.

o Ausencia de relaciones• Facilidad para replicación de datos• Dificultad para expresar modelos complejos

Page 8: Cloud Computing: las nuevas Capas de Persistencia

Apache CouchDB

Page 9: Cloud Computing: las nuevas Capas de Persistencia

Características de CouchDB Base de Datos Orientada a Documentos

o Revisiones:• Los documentos no se sobreescriben al

modificarse

• Se crean revisiones a-la SVN

• Las revisiones desaparecen (solo sirven para concurrencia)

o Adjuntos• Se pueden adjuntar documentos (jpg, txt, pdf…)

Page 10: Cloud Computing: las nuevas Capas de Persistencia

Características de CouchDB

Motor de vistas mediante Javascripto Funciones javascript que “emiten” resultados

• Se devuelven pares clave/valor donde los valores son documentos.o Se usa para implementar consultas

complejas.

function(doc){ emit(“key”, doc);}

Page 11: Cloud Computing: las nuevas Capas de Persistencia

Características de CouchDB

Motor de vistas mediante Javascripto Funciones “reduce”

• Se usan para generar resultados agregados

function (key, values, rereduce) {

return sum(values);}

Page 12: Cloud Computing: las nuevas Capas de Persistencia

Características de CouchDB

Base de datos “distribuida”o Mecanismos para replicación de datos entre

instancias.o Usado en entornos con miles de instancias.o Diseñado desde el principio para ello.o Basado en HTTP → Escalabilidad propia de

aplicaciones web.

• Pero...o ¿Ejemplos?

Page 13: Cloud Computing: las nuevas Capas de Persistencia

Características de CouchDB

Basada en Servicios Web RESTo PUT → CREATE, INSERT

o GET → SELECT

o POST → CREATE, INSERT, UPDATE

o DELETE → DELETE

o COPY, MOVE...

o Comunicación mediante JSON.• http://host/_all_dbs ["testing","blog"]

Page 15: Cloud Computing: las nuevas Capas de Persistencia

Accediendo a los datos:o http://host/_all_dbs : lista de Bdso http://host/blog_[nombre, apodo, nick...] :

Información de la BDo http://host/blog_[nombre, apodo, nick...]/_all_docs :

Lista de documentoso http://host/blog_[nombre, apodo, nick...]/[doc_id] :

Información del documento

Jugando con CouchDB

Page 16: Cloud Computing: las nuevas Capas de Persistencia

Creando Vistas:o Creamos una vista temporal

o Podemos realizar pruebas

o La almacenamos con un nombre

Jugando con CouchDB

Page 17: Cloud Computing: las nuevas Capas de Persistencia

Jugando con CouchDB

Vía programacióno Lenguaje de programación capaz de realizar

peticiones HTTP

o Por ejemplo: PHP 5 + cURL

Page 18: Cloud Computing: las nuevas Capas de Persistencia

Jugando con CouchDB

Vía programacióno Obtener datos$ch = curl_init("http://host/_all_dbs");curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$json = curl_exec($ch);curl_close($ch);$dbs = json_decode($json);

Page 19: Cloud Computing: las nuevas Capas de Persistencia

Jugando con CouchDB

Vía programacióno Obtener datos de una vista$ch = curl_init("http://host/_view/group_by_author/authors?group=true");curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$json = curl_exec($ch);curl_close($ch);$dbs = json_decode($json);

Page 20: Cloud Computing: las nuevas Capas de Persistencia

Jugando con CouchDB

Vía programacióno Grabar datos$ch = curl_init("http://host/blog/");

curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “POST”);curl_setopt($ch, CURLOPT_POSTFIELDS, '{"titulo":"prueba ", "autor":"brenes"}');$json = curl_exec($ch);curl_close($ch);$dbs = json_decode($json);

Page 21: Cloud Computing: las nuevas Capas de Persistencia

Jugando con CouchDB

Vía programacióno Grabar datos$ch = curl_init("http://host/blog/");

curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “PUT”);curl_setopt($ch, CURLOPT_POSTFIELDS, '{“_id”: “1”, "titulo":"prueba ", "autor":"brenes"}');$json = curl_exec($ch);curl_close($ch);$dbs = json_decode($json);

Page 22: Cloud Computing: las nuevas Capas de Persistencia

Jugando con CouchDB

Vía programacióno Actualizar datos$ch = curl_init("http://host/blog/");curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “PUT”);curl_setopt($ch, CURLOPT_POSTFIELDS, '{“id”: “1”, “_rev”: “1236EF”, "titulo":"prueba ", "autor":"brenes"}');$json = curl_exec($ch);curl_close($ch);$dbs = json_decode($json);

Page 23: Cloud Computing: las nuevas Capas de Persistencia

Jugando con CouchDB

Vía programacióno Eliminar datos$ch = curl_init("http://host/blog/post_id");

curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “DELETE”);$json = curl_exec($ch);curl_close($ch);$dbs = json_decode($json);

Page 24: Cloud Computing: las nuevas Capas de Persistencia

Amazon SimpleDB

Page 25: Cloud Computing: las nuevas Capas de Persistencia

Características de Amazon SimpleDB

Base de Datos Orientada a Documentoso Base de Datos => Dominio

o Documento => Item

o Valores => Atributos

Page 26: Cloud Computing: las nuevas Capas de Persistencia

Características de Amazon SimpleDB

API basada en servicios SOAP o RESTo Definición de servicios mediante WSDL

o Autenticación:

• Identificador de acceso + hash con una clave secreta

• Certificado x.509

o Bibliotecas de desarrollo

Page 27: Cloud Computing: las nuevas Capas de Persistencia

Características de Amazon SimpleDB

Escalabilidado Posibilidad de crear varios dominios.

o En manos de Amazon

• Sin costes

• Sin control

Page 28: Cloud Computing: las nuevas Capas de Persistencia

Jugando con Amazon SimpleDB

Interfaz de accesoo Via extensión de Firefox

o http://code.google.com/p/sdbtool/

Page 29: Cloud Computing: las nuevas Capas de Persistencia

Jugando con Amazon SimpleDB

Vía programacióno Bibliotecas de desarrollo disponibles para

muchos lenguajes.

o Consumo directo de SOAP.

o En nuestro caso: C# .NETo http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1133

Page 30: Cloud Computing: las nuevas Capas de Persistencia

Jugando con Amazon SimpleDB

Vía programacióno Listar Dominios

ListDomainsRequest request = new ListDomainsRequest();ListDomainsResponse response = this.cliente.ListDomains(request);response.ListDomainsResult.DomainName;

Page 31: Cloud Computing: las nuevas Capas de Persistencia

Jugando con Amazon SimpleDB

Vía programacióno Crear DominiosCreateDomainRequest request = new CreateDomainRequest();request.DomainName = "Nombre";CreateDomainResponse response = this.cliente.ListDomains(request);response.ListDomainsResult.DomainName;

Page 32: Cloud Computing: las nuevas Capas de Persistencia

Jugando con Amazon SimpleDB

Vía programacióno Obtener ItemsQueryRequest request = new QueryRequest();request.DomainName = this.cbDomains.SelectedItem.ToString();QueryResponse response = this.cliente.Query(request);

Page 33: Cloud Computing: las nuevas Capas de Persistencia

Jugando con Amazon SimpleDB

Vía programacióno Todos los accesos siguen la misma

estructura[Metodo a ejecutar]Request request = new [Metodo a ejecutar]Request();[Configurar Request]

[Metodo a ejecutar]Response response = this.cliente.[Metodo a ejecutar](request);

Page 34: Cloud Computing: las nuevas Capas de Persistencia

Conclusiones

Page 35: Cloud Computing: las nuevas Capas de Persistencia

Conclusiones Sobre las BBDD Orientadas a

Documentoso ¿Merecen la pena?

o ¿Sustitutas de BBDD Relacionales?

o ¿Las usaríais en proyectos?

o Problemas de CouchDB

o Problemas de Amazon SimpleDB

Page 36: Cloud Computing: las nuevas Capas de Persistencia

Conclusiones

Dudas a [email protected]

Page 37: Cloud Computing: las nuevas Capas de Persistencia

ConclusionesEstas transparencias se publican bajo licencia Creative Commons y se pueden redistribuir o modificar bajo las siguientes condiciones:

1. Se dé reconocimiento al autor de estas transparencias.

2. No se use con propósitos comerciales.3. Se distribuya con la misma licencia.

Texto de la licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/