Cloud Computing: las nuevas Capas de Persistencia
Click here to load reader
-
Upload
david-j-brenes -
Category
Technology
-
view
3.041 -
download
4
description
Transcript of Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing:
Nuevas capas de persistencia
El problema
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
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
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
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
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
Apache CouchDB
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…)
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);}
Características de CouchDB
Motor de vistas mediante Javascripto Funciones “reduce”
• Se usan para generar resultados agregados
function (key, values, rereduce) {
return sum(values);}
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?
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"]
Jugando con CouchDB
Via http://host/_utils/
Crear Base de Datos
Crear documentos
Crear Vistas
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
Creando Vistas:o Creamos una vista temporal
o Podemos realizar pruebas
o La almacenamos con un nombre
Jugando con CouchDB
Jugando con CouchDB
Vía programacióno Lenguaje de programación capaz de realizar
peticiones HTTP
o Por ejemplo: PHP 5 + cURL
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);
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);
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);
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);
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);
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);
Amazon SimpleDB
Características de Amazon SimpleDB
Base de Datos Orientada a Documentoso Base de Datos => Dominio
o Documento => Item
o Valores => Atributos
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
Características de Amazon SimpleDB
Escalabilidado Posibilidad de crear varios dominios.
o En manos de Amazon
• Sin costes
• Sin control
Jugando con Amazon SimpleDB
Interfaz de accesoo Via extensión de Firefox
o http://code.google.com/p/sdbtool/
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
Jugando con Amazon SimpleDB
Vía programacióno Listar Dominios
ListDomainsRequest request = new ListDomainsRequest();ListDomainsResponse response = this.cliente.ListDomains(request);response.ListDomainsResult.DomainName;
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;
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);
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);
Conclusiones
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
Conclusiones
Dudas a [email protected]
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/