SlideShare a Scribd company logo
1 of 37
Download to read offline
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 Javascript
    o   Funciones javascript que “emiten” resultados
     function(doc)
     {
         emit(“key”, doc);
     }


•   Se devuelven pares clave/valor donde
    los valores son documentos.
    o   Se usa para implementar consultas
        complejas.
Características de CouchDB
   Motor de vistas mediante Javascript
    o   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 REST
    o   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   [quot;testingquot;,quot;blogquot;]
Jugando con CouchDB
   Via http://host/_utils/
   Crear Base de Datos
   Crear documentos
   Crear Vistas
Jugando con CouchDB
   Accediendo a los datos:
    o
        http://host/_all_dbs   : lista de Bds
    o
        http://host/blog_[nombre, apodo, nick...] :
        Información de la BD
    o
        http://host/blog_[nombre, apodo, nick...]/_all_docs :
        Lista de documentos
    o
        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
   Vía programación
    o   Lenguaje de programación capaz de realizar
        peticiones HTTP
    o   Por ejemplo: PHP 5 + cURL
Jugando con CouchDB
   Vía programación
    o   Obtener datos
    $ch = curl_init(quot;http://host/_all_dbsquot;);

    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ón
    o   Obtener datos de una vista
    $ch =
    curl_init(quot;http://host/_view/group_by_author/authors?
    group=truequot;);

    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ón
    o   Grabar datos
    $ch = curl_init(quot;http://host/blog/quot;);


    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “POST”);

    curl_setopt($ch, CURLOPT_POSTFIELDS, '{quot;tituloquot;:quot;prueba
    quot;, quot;autorquot;:quot;brenesquot;}');

    $json = curl_exec($ch);
    curl_close($ch);

    $dbs = json_decode($json);
Jugando con CouchDB
   Vía programación
    o   Grabar datos
    $ch = curl_init(quot;http://host/blog/quot;);


    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”,
    quot;tituloquot;:quot;prueba quot;, quot;autorquot;:quot;brenesquot;}');

    $json = curl_exec($ch);
    curl_close($ch);

    $dbs = json_decode($json);
Jugando con CouchDB
   Vía programación
    o   Actualizar datos
    $ch = curl_init(quot;http://host/blog/quot;);

    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”, quot;tituloquot;:quot;prueba quot;,
    quot;autorquot;:quot;brenesquot;}');

    $json = curl_exec($ch);
    curl_close($ch);

    $dbs = json_decode($json);
Jugando con CouchDB
   Vía programación
    o   Eliminar datos
    $ch = curl_init(quot;http://host/blog/post_idquot;);


    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 Documentos
     o   Base de Datos => Dominio
     o   Documento => Item
     o   Valores => Atributos
Características de Amazon
SimpleDB
    API basada en servicios SOAP o REST
     o   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
    Escalabilidad
     o   Posibilidad de crear varios dominios.
     o   En manos de Amazon
          •   Sin costes
          •   Sin control
Jugando con Amazon SimpleDB
   Interfaz de acceso
    o   Via extensión de Firefox
             o   http://code.google.com/p/sdbtool/
Jugando con Amazon SimpleDB
   Vía programación
    o   Bibliotecas de desarrollo disponibles para
        muchos lenguajes.
    o   Consumo directo de SOAP.
    o   En nuestro caso: C# .NET
o   http://developer.amazonwebservices.com/connect/entry.jspa?exte
Jugando con Amazon SimpleDB
   Vía programación
    o   Listar Dominios


 ListDomainsRequest request = new ListDomainsRequest();

 ListDomainsResponse response =
 this.cliente.ListDomains(request);

 response.ListDomainsResult.DomainName;
Jugando con Amazon SimpleDB
   Vía programación
    o   Crear Dominios
    CreateDomainRequest request = new
    CreateDomainRequest();
    request.DomainName = quot;Nombrequot;;

    CreateDomainResponse response =
    this.cliente.ListDomains(request);

    response.ListDomainsResult.DomainName;
Jugando con Amazon SimpleDB
   Vía programación
    o   Obtener Items
    QueryRequest request = new QueryRequest();

    request.DomainName =
    this.cbDomains.SelectedItem.ToString();

    QueryResponse response = this.cliente.Query(request);
Jugando con Amazon SimpleDB
   Vía programación
    o   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
     Documentos
     o   ¿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 docencia@davidjbrenes.info
Conclusiones
 Estas 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/

More Related Content

Similar to Cloud Computing: las nuevas Capas de Persistencia

José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]RootedCON
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
Cloud Computing: Algoritmos en la Nube
Cloud Computing: Algoritmos en la NubeCloud Computing: Algoritmos en la Nube
Cloud Computing: Algoritmos en la NubeDavid J. Brenes
 
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos AiresPresentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Airespeterpunk
 
Construcción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónConstrucción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónLoja Valle de Tecnología
 
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - ExasolExtendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - ExasolJavier Abadía
 
Base de Datos por Gustavo V.M
Base de Datos por Gustavo V.MBase de Datos por Gustavo V.M
Base de Datos por Gustavo V.MGustavo
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Asier Marqués
 
Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasJose Bustamante Romero
 
Introducción a polybase en SQL Server
Introducción a polybase en SQL ServerIntroducción a polybase en SQL Server
Introducción a polybase en SQL ServerEduardo Castro
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDBAlejandro Mancilla
 
IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005oswchavez
 
Global Azure Bootcamp - Jorge Muchaypiña G.
Global Azure Bootcamp - Jorge Muchaypiña G.Global Azure Bootcamp - Jorge Muchaypiña G.
Global Azure Bootcamp - Jorge Muchaypiña G.jorge Muchaypiña
 
CouchDB y el desarrollo de aplicaciones Android
CouchDB y el desarrollo de aplicaciones AndroidCouchDB y el desarrollo de aplicaciones Android
CouchDB y el desarrollo de aplicaciones AndroidRicardo Monagas Medina
 
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...SpanishPASSVC
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la DebianLeonardo Cezar
 

Similar to Cloud Computing: las nuevas Capas de Persistencia (20)

José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Cloud Computing: Algoritmos en la Nube
Cloud Computing: Algoritmos en la NubeCloud Computing: Algoritmos en la Nube
Cloud Computing: Algoritmos en la Nube
 
Connectionjava
ConnectionjavaConnectionjava
Connectionjava
 
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos AiresPresentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
 
Construcción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-DistribuciónConstrucción de Aplicaciones de Avanzada con Geo-Distribución
Construcción de Aplicaciones de Avanzada con Geo-Distribución
 
Couch db
Couch dbCouch db
Couch db
 
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - ExasolExtendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
 
Base de Datos por Gustavo V.M
Base de Datos por Gustavo V.MBase de Datos por Gustavo V.M
Base de Datos por Gustavo V.M
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
 
Clase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de SistemasClase conexion java - Analisis de Sistemas
Clase conexion java - Analisis de Sistemas
 
Introducción a polybase en SQL Server
Introducción a polybase en SQL ServerIntroducción a polybase en SQL Server
Introducción a polybase en SQL Server
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDB
 
IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005
 
Global Azure Bootcamp - Jorge Muchaypiña G.
Global Azure Bootcamp - Jorge Muchaypiña G.Global Azure Bootcamp - Jorge Muchaypiña G.
Global Azure Bootcamp - Jorge Muchaypiña G.
 
Introducción a hadoop
Introducción a hadoopIntroducción a hadoop
Introducción a hadoop
 
Web2 Quiensomos
Web2 QuiensomosWeb2 Quiensomos
Web2 Quiensomos
 
CouchDB y el desarrollo de aplicaciones Android
CouchDB y el desarrollo de aplicaciones AndroidCouchDB y el desarrollo de aplicaciones Android
CouchDB y el desarrollo de aplicaciones Android
 
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 

More from David J. Brenes

Desarrollo rápido con PHP y Symfony (VI): Los formularios
Desarrollo rápido con PHP y Symfony (VI): Los formulariosDesarrollo rápido con PHP y Symfony (VI): Los formularios
Desarrollo rápido con PHP y Symfony (VI): Los formulariosDavid J. Brenes
 
Desarrollo rápido con PHP y Symfony (V): Las rutas
Desarrollo rápido con PHP y Symfony (V): Las rutasDesarrollo rápido con PHP y Symfony (V): Las rutas
Desarrollo rápido con PHP y Symfony (V): Las rutasDavid J. Brenes
 
Desarrollo rápido con PHP y Symfony (IV): El Modelo
Desarrollo rápido con PHP y Symfony (IV): El ModeloDesarrollo rápido con PHP y Symfony (IV): El Modelo
Desarrollo rápido con PHP y Symfony (IV): El ModeloDavid J. Brenes
 
Desarrollo rápido con PHP y Symfony (III): La vista
Desarrollo rápido con PHP y Symfony (III): La vistaDesarrollo rápido con PHP y Symfony (III): La vista
Desarrollo rápido con PHP y Symfony (III): La vistaDavid J. Brenes
 
Desarrollo rápido con PHP y Symfony (II): El controlador
Desarrollo rápido con PHP y Symfony (II): El controladorDesarrollo rápido con PHP y Symfony (II): El controlador
Desarrollo rápido con PHP y Symfony (II): El controladorDavid J. Brenes
 
Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony
Desarrollo rápido con PHP y Symfony (I): Introducción a SymfonyDesarrollo rápido con PHP y Symfony (I): Introducción a Symfony
Desarrollo rápido con PHP y Symfony (I): Introducción a SymfonyDavid J. Brenes
 
Introducción a la Yahoo! Open Strategy
Introducción a la Yahoo! Open StrategyIntroducción a la Yahoo! Open Strategy
Introducción a la Yahoo! Open StrategyDavid J. Brenes
 
Introduccion a los Servicios Web Rest
Introduccion a los Servicios Web RestIntroduccion a los Servicios Web Rest
Introduccion a los Servicios Web RestDavid J. Brenes
 
Servicio y Consumo de Servicios REST en PHP
Servicio y Consumo de Servicios REST en PHPServicio y Consumo de Servicios REST en PHP
Servicio y Consumo de Servicios REST en PHPDavid J. Brenes
 
Cloud Computing: Recursos de la Web 2.0
Cloud Computing: Recursos de la Web 2.0Cloud Computing: Recursos de la Web 2.0
Cloud Computing: Recursos de la Web 2.0David J. Brenes
 
Automatic detection of navigational queries according to Behavioural Characte...
Automatic detection of navigational queries according to Behavioural Characte...Automatic detection of navigational queries according to Behavioural Characte...
Automatic detection of navigational queries according to Behavioural Characte...David J. Brenes
 
Programación de Yahoo! Pipes
Programación de Yahoo! PipesProgramación de Yahoo! Pipes
Programación de Yahoo! PipesDavid J. Brenes
 
Yahoo! Pipes y la Web 2.0
Yahoo! Pipes y la Web 2.0Yahoo! Pipes y la Web 2.0
Yahoo! Pipes y la Web 2.0David J. Brenes
 
Presentación Lectura TFMI
Presentación Lectura TFMIPresentación Lectura TFMI
Presentación Lectura TFMIDavid J. Brenes
 

More from David J. Brenes (16)

Desarrollo rápido con PHP y Symfony (VI): Los formularios
Desarrollo rápido con PHP y Symfony (VI): Los formulariosDesarrollo rápido con PHP y Symfony (VI): Los formularios
Desarrollo rápido con PHP y Symfony (VI): Los formularios
 
Desarrollo rápido con PHP y Symfony (V): Las rutas
Desarrollo rápido con PHP y Symfony (V): Las rutasDesarrollo rápido con PHP y Symfony (V): Las rutas
Desarrollo rápido con PHP y Symfony (V): Las rutas
 
Desarrollo rápido con PHP y Symfony (IV): El Modelo
Desarrollo rápido con PHP y Symfony (IV): El ModeloDesarrollo rápido con PHP y Symfony (IV): El Modelo
Desarrollo rápido con PHP y Symfony (IV): El Modelo
 
Desarrollo rápido con PHP y Symfony (III): La vista
Desarrollo rápido con PHP y Symfony (III): La vistaDesarrollo rápido con PHP y Symfony (III): La vista
Desarrollo rápido con PHP y Symfony (III): La vista
 
Desarrollo rápido con PHP y Symfony (II): El controlador
Desarrollo rápido con PHP y Symfony (II): El controladorDesarrollo rápido con PHP y Symfony (II): El controlador
Desarrollo rápido con PHP y Symfony (II): El controlador
 
Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony
Desarrollo rápido con PHP y Symfony (I): Introducción a SymfonyDesarrollo rápido con PHP y Symfony (I): Introducción a Symfony
Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony
 
Introducción a PHP
Introducción a PHPIntroducción a PHP
Introducción a PHP
 
Introducción a la Yahoo! Open Strategy
Introducción a la Yahoo! Open StrategyIntroducción a la Yahoo! Open Strategy
Introducción a la Yahoo! Open Strategy
 
Yahoo! Query Language
Yahoo! Query LanguageYahoo! Query Language
Yahoo! Query Language
 
Introduccion a los Servicios Web Rest
Introduccion a los Servicios Web RestIntroduccion a los Servicios Web Rest
Introduccion a los Servicios Web Rest
 
Servicio y Consumo de Servicios REST en PHP
Servicio y Consumo de Servicios REST en PHPServicio y Consumo de Servicios REST en PHP
Servicio y Consumo de Servicios REST en PHP
 
Cloud Computing: Recursos de la Web 2.0
Cloud Computing: Recursos de la Web 2.0Cloud Computing: Recursos de la Web 2.0
Cloud Computing: Recursos de la Web 2.0
 
Automatic detection of navigational queries according to Behavioural Characte...
Automatic detection of navigational queries according to Behavioural Characte...Automatic detection of navigational queries according to Behavioural Characte...
Automatic detection of navigational queries according to Behavioural Characte...
 
Programación de Yahoo! Pipes
Programación de Yahoo! PipesProgramación de Yahoo! Pipes
Programación de Yahoo! Pipes
 
Yahoo! Pipes y la Web 2.0
Yahoo! Pipes y la Web 2.0Yahoo! Pipes y la Web 2.0
Yahoo! Pipes y la Web 2.0
 
Presentación Lectura TFMI
Presentación Lectura TFMIPresentación Lectura TFMI
Presentación Lectura TFMI
 

Recently uploaded

GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 

Recently uploaded (20)

GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 

Cloud Computing: las nuevas Capas de Persistencia

  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 9. 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…)
  • 10. Características de CouchDB  Motor de vistas mediante Javascript o Funciones javascript que “emiten” resultados function(doc) { emit(“key”, doc); } • Se devuelven pares clave/valor donde los valores son documentos. o Se usa para implementar consultas complejas.
  • 11. Características de CouchDB  Motor de vistas mediante Javascript o Funciones “reduce” • Se usan para generar resultados agregados function (key, values, rereduce) { return sum(values); }
  • 12. 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?
  • 13. Características de CouchDB  Basada en Servicios Web REST o 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 [quot;testingquot;,quot;blogquot;]
  • 14. Jugando con CouchDB  Via http://host/_utils/  Crear Base de Datos  Crear documentos  Crear Vistas
  • 15. Jugando con CouchDB  Accediendo a los datos: o http://host/_all_dbs : lista de Bds o http://host/blog_[nombre, apodo, nick...] : Información de la BD o http://host/blog_[nombre, apodo, nick...]/_all_docs : Lista de documentos o http://host/blog_[nombre, apodo, nick...]/[doc_id] : Información del documento
  • 16. Jugando con CouchDB  Creando Vistas: o Creamos una vista temporal o Podemos realizar pruebas o La almacenamos con un nombre
  • 17. Jugando con CouchDB  Vía programación o Lenguaje de programación capaz de realizar peticiones HTTP o Por ejemplo: PHP 5 + cURL
  • 18. Jugando con CouchDB  Vía programación o Obtener datos $ch = curl_init(quot;http://host/_all_dbsquot;); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $json = curl_exec($ch); curl_close($ch); $dbs = json_decode($json);
  • 19. Jugando con CouchDB  Vía programación o Obtener datos de una vista $ch = curl_init(quot;http://host/_view/group_by_author/authors? group=truequot;); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $json = curl_exec($ch); curl_close($ch); $dbs = json_decode($json);
  • 20. Jugando con CouchDB  Vía programación o Grabar datos $ch = curl_init(quot;http://host/blog/quot;); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “POST”); curl_setopt($ch, CURLOPT_POSTFIELDS, '{quot;tituloquot;:quot;prueba quot;, quot;autorquot;:quot;brenesquot;}'); $json = curl_exec($ch); curl_close($ch); $dbs = json_decode($json);
  • 21. Jugando con CouchDB  Vía programación o Grabar datos $ch = curl_init(quot;http://host/blog/quot;); 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”, quot;tituloquot;:quot;prueba quot;, quot;autorquot;:quot;brenesquot;}'); $json = curl_exec($ch); curl_close($ch); $dbs = json_decode($json);
  • 22. Jugando con CouchDB  Vía programación o Actualizar datos $ch = curl_init(quot;http://host/blog/quot;); 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”, quot;tituloquot;:quot;prueba quot;, quot;autorquot;:quot;brenesquot;}'); $json = curl_exec($ch); curl_close($ch); $dbs = json_decode($json);
  • 23. Jugando con CouchDB  Vía programación o Eliminar datos $ch = curl_init(quot;http://host/blog/post_idquot;); 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);
  • 25. Características de Amazon SimpleDB  Base de Datos Orientada a Documentos o Base de Datos => Dominio o Documento => Item o Valores => Atributos
  • 26. Características de Amazon SimpleDB  API basada en servicios SOAP o REST o Definición de servicios mediante WSDL o Autenticación: • Identificador de acceso + hash con una clave secreta • Certificado x.509 o Bibliotecas de desarrollo
  • 27. Características de Amazon SimpleDB  Escalabilidad o Posibilidad de crear varios dominios. o En manos de Amazon • Sin costes • Sin control
  • 28. Jugando con Amazon SimpleDB  Interfaz de acceso o Via extensión de Firefox o http://code.google.com/p/sdbtool/
  • 29. Jugando con Amazon SimpleDB  Vía programación o Bibliotecas de desarrollo disponibles para muchos lenguajes. o Consumo directo de SOAP. o En nuestro caso: C# .NET o http://developer.amazonwebservices.com/connect/entry.jspa?exte
  • 30. Jugando con Amazon SimpleDB  Vía programación o Listar Dominios ListDomainsRequest request = new ListDomainsRequest(); ListDomainsResponse response = this.cliente.ListDomains(request); response.ListDomainsResult.DomainName;
  • 31. Jugando con Amazon SimpleDB  Vía programación o Crear Dominios CreateDomainRequest request = new CreateDomainRequest(); request.DomainName = quot;Nombrequot;; CreateDomainResponse response = this.cliente.ListDomains(request); response.ListDomainsResult.DomainName;
  • 32. Jugando con Amazon SimpleDB  Vía programación o Obtener Items QueryRequest request = new QueryRequest(); request.DomainName = this.cbDomains.SelectedItem.ToString(); QueryResponse response = this.cliente.Query(request);
  • 33. Jugando con Amazon SimpleDB  Vía programación o 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);
  • 35. Conclusiones  Sobre las BBDD Orientadas a Documentos o ¿Merecen la pena? o ¿Sustitutas de BBDD Relacionales? o ¿Las usaríais en proyectos? o Problemas de CouchDB o Problemas de Amazon SimpleDB
  • 36. Conclusiones Dudas a docencia@davidjbrenes.info
  • 37. Conclusiones Estas 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/