SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler 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/

Mais conteúdo relacionado

Semelhante a 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
 

Semelhante a 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
 

Mais de 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
 

Mais de 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
 

Último

Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.radatoro1
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Tecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaTecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaElizabethLpezSoto
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024anasofiarodriguezcru
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdftecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdflauralizcano0319
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfTENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfJoseAlejandroPerezBa
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Trabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalTrabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalEmanuelCastro64
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskTrabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskbydaniela5
 
TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888ElianaValencia28
 

Último (20)

Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Tecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaTecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestría
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdftecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfTENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Trabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalTrabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamental
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskTrabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
 
TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888
 

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/