SlideShare ist ein Scribd-Unternehmen logo
1 von 26
CouchDB y el desarrollo de
     aplicaciones Android
         Ricardo Monagas
Contenido
  1. Big Data
  2. NoSQL
  3. CouchDB
  4. CouchDB & Android
  5. Casos de Éxito
  6. Enlaces de interés
2012


DATA
2.5 Quintillones de Bytes diarios
            Fuente: http://www-01.ibm.com/software/data/bigdata/




Datos por todos lados


        340 Millones de Tweets por día
             4000 tweets por segundo
                                         Fuente: blog.twitter.com
Voldemort

          NoSQL
CouchDB
                 BigTable

          Amazon DynamoDB
CouchDB

Documentos JSON
 Javascript para peticiones MapReduce
       HTTP para formar un API
1. Base de Datos orientada
                 en Documentos
{

    “_id”: “453453406456456”,
    “_rev”: “5345436475658”,
    “moneda”: “Bs”,
    “productos”: *
       {
             “nombre”: “Manzana”,
             “precio”: 20, …
        }, …

    ],
    “fecha”: “2012-08-12T13:15:56.684+0000”,
     “cantidad”: 2,
     “estado”: “cerrado” …
}
2. Peticiones mediante
                   Documentos de Diseño
{ "_id": "_design/Compra",
   "_rev": "371-b2bdc2ce5dd269017f006595328a66ad",
  "language": "javascript",

    "views": {

      “por_fecha_compra": {

           "map": “
            function(doc) {

                  if (doc.fecha && doc.id_usuario && doc.estado === ‘cerrado')

                       emit([doc.id_usuario,doc.fecha], doc);

            }“
      }}
}
¿Por qué NoSQL y CouchDB?

        Los datos de la vida real son
        almacenados en documentos

Almacenamiento de la
  aplicación completa
¿Por qué NoSQL y CouchDB?

Diseño sin esquemas rígidos


          Fácil administración, backup,
          replicación y trabajo offline
CouchDB = Relax
CouchDB & Android
 Instalación


      Couchbase

 Fuente: https://github.com/couchbase/Android-Couchbase
CouchDB & Android
 Instalación

        Ektorp

     Fuente: https://github.com/helun/Ektorp
CouchDB & Android
 Inicialización de CouchDB
  1. Creación de instancia ICouchbaseDelegate
   private final ICouchbaseDelegate mDelegate = new ICouchbaseDelegate() {

        @Override
        public void couchbaseStarted(String host, int port) {}

        @Override
        public void exit(String error) {}

   };
CouchDB & Android
 Inicialización de CouchDB

  2. Declaración de Servicio para Couchbase

   private ServiceConnection couchServiceConnection;
CouchDB & Android
      Inicialización de CouchDB

       3. Método de Inicio de Couchbase

public void startCouchbase() {

    CouchbaseMobile couch = new CouchbaseMobile(getBaseContext(), mCallback);
    couchServiceConnection = couch.startCouchbase();

}
CouchDB & Android
          Inicialización de CouchDB
          3. Llamada al método startCouchbase
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    ...

    startCouchbase();

}
CouchDB & Android
     Inicialización de Ektorp
      1. Creación del Cliente HTTP
public void couchbaseStarted(String host, int port) {


    httpClient = new AndroidHttpClient.Builder()
                 .host(host)
                 .port(port)
                 .username(username)
                 .password(password)
                 .build();

}
CouchDB & Android
    Inicialización de Ektorp
      2. Conexión con el servidor de CouchDB
CouchDbInstance dbInstance = new StdCouchDbInstance(httpClient);

CouchDbConnector db = new StdCouchDbConnector("mydatabase", dbInstance);

db.createDatabaseIfNotExists();
CouchDB & Android
    Manejo de la Base de Datos
     1. Creación de Documento de Compra
public class Compra extends CouchDbDocument {

    private int id;

    private double total;

    private List<Producto> productos;
    …
}
CouchDB & Android
    Manejo de la Base de Datos
     2. CRUD para los documentos de Compra
public class CompraRepository extends CouchDbRepositorySupport<Compra> {

     public CompraRepository(CouchDbConnector db) {

         super(Compra.class, db);
     }

}
CouchDB & Android
    Manejo de la Base de Datos
     3. Ejemplos de manipulación de BD

compraRepository = new CompraRepository (couchDbConnector);

Compra c = compraRepository.get(id); // Lectura de Compra por ID

couchDbConnector.create( c ); // Creación de documento de Compra

compraRepository.update( c ); // Actualización de documento de Compra

couchDbConnector.delete( c ); // Eliminación de documento de Compra
CouchDB & Android
    Manejo de la Base de Datos
     4. Peticiones en CouchDB

ViewQuery query = new ViewQuery()
                      .designDocId("_design/Compra")
                      .viewName(“por_fecha_compra") .key(“31-01-2013");

List<Compra> compras = db.queryView(query, Compra.class);
Casos de Éxito
Enlaces de interés

  Couchbase – http://www.couchbase.com

  Ektorp – http://goo.gl/dDKC0

  Couchbase Android – http://goo.gl/MMca5

  Cloudant – http://www.cloudant.com
Gracias por su atención,
¿Preguntas?
                    Ricardo Monagas
        Director General de Uppersky

               Twitter: @rmmonagas
       Slideshare: http://goo.gl/GlngJ
 Email: ricardo.monagas@uppersky.co

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db
 
Bases de datos NoSQL orientadas a documentos
Bases de datos NoSQL orientadas a documentosBases de datos NoSQL orientadas a documentos
Bases de datos NoSQL orientadas a documentos
 
Que es MongoDB
Que es MongoDBQue es MongoDB
Que es MongoDB
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQL
 
NoSQL - MongoDB
NoSQL - MongoDBNoSQL - MongoDB
NoSQL - MongoDB
 
Bases de Datos NoSQL
Bases de Datos NoSQLBases de Datos NoSQL
Bases de Datos NoSQL
 
NoSQL: la siguiente generación de Base de Datos
NoSQL: la siguiente generación de Base de DatosNoSQL: la siguiente generación de Base de Datos
NoSQL: la siguiente generación de Base de Datos
 
Presentacion BD NoSQL
Presentacion  BD NoSQLPresentacion  BD NoSQL
Presentacion BD NoSQL
 
NoSQL: Un Cambio de Paradigma - Apache Cassandra
NoSQL: Un Cambio de Paradigma - Apache CassandraNoSQL: Un Cambio de Paradigma - Apache Cassandra
NoSQL: Un Cambio de Paradigma - Apache Cassandra
 
NoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesNoSQL bases de datos no relacionales
NoSQL bases de datos no relacionales
 
Un acercamiento a las bases de datos NoSQL
Un acercamiento a las bases de datos NoSQLUn acercamiento a las bases de datos NoSQL
Un acercamiento a las bases de datos NoSQL
 
MongoDB
MongoDBMongoDB
MongoDB
 
NoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradasNoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradas
 
Base de datos
Base de datosBase de datos
Base de datos
 
NoSQL: Un nuevo paradigma - Apache Cassandra
NoSQL: Un nuevo paradigma - Apache CassandraNoSQL: Un nuevo paradigma - Apache Cassandra
NoSQL: Un nuevo paradigma - Apache Cassandra
 
Act1.7 nosql terminado corregido
Act1.7 nosql terminado corregidoAct1.7 nosql terminado corregido
Act1.7 nosql terminado corregido
 
MONGODB - NOSQL
MONGODB - NOSQLMONGODB - NOSQL
MONGODB - NOSQL
 
Base de datos
Base de datosBase de datos
Base de datos
 
Bases de Datos NoSQL - Riak
Bases de Datos NoSQL - Riak Bases de Datos NoSQL - Riak
Bases de Datos NoSQL - Riak
 
Bases de datos no sql
Bases de datos no sqlBases de datos no sql
Bases de datos no sql
 

Ähnlich wie CouchDB y el desarrollo de aplicaciones Android

Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
Dani Latorre
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2
Steven Gomez
 

Ähnlich wie CouchDB y el desarrollo de aplicaciones Android (20)

Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
 
Mongodb: Un pequeño sorbo
Mongodb: Un pequeño sorboMongodb: Un pequeño sorbo
Mongodb: Un pequeño sorbo
 
NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBNOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDB
 
Taller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaTaller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataforma
 
SEVILLA Meetups23032023.pdf
SEVILLA Meetups23032023.pdfSEVILLA Meetups23032023.pdf
SEVILLA Meetups23032023.pdf
 
MongoDB y bluemix
MongoDB y bluemixMongoDB y bluemix
MongoDB y bluemix
 
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
 
APis REST: Parse
APis REST: ParseAPis REST: Parse
APis REST: Parse
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDB
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
IT Camps Apps Office 365 Valencia 2014
IT Camps Apps Office 365 Valencia 2014IT Camps Apps Office 365 Valencia 2014
IT Camps Apps Office 365 Valencia 2014
 
04. Implementando APIs HTML5
04. Implementando APIs HTML5 04. Implementando APIs HTML5
04. Implementando APIs HTML5
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
 
Sincronización de BD SQLite con MySQL en Android
Sincronización de BD SQLite con MySQL en AndroidSincronización de BD SQLite con MySQL en Android
Sincronización de BD SQLite con MySQL en Android
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2
 
La web como Plataforma con Dojo Toolkit
La web como Plataforma con Dojo ToolkitLa web como Plataforma con Dojo Toolkit
La web como Plataforma con Dojo Toolkit
 
Beyond the Basics 2: Framework Aggregation
Beyond the Basics 2: Framework AggregationBeyond the Basics 2: Framework Aggregation
Beyond the Basics 2: Framework Aggregation
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Grails
GrailsGrails
Grails
 

Kürzlich hochgeladen

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Kürzlich hochgeladen (10)

Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 

CouchDB y el desarrollo de aplicaciones Android

  • 1. CouchDB y el desarrollo de aplicaciones Android Ricardo Monagas
  • 2. Contenido 1. Big Data 2. NoSQL 3. CouchDB 4. CouchDB & Android 5. Casos de Éxito 6. Enlaces de interés
  • 4. 2.5 Quintillones de Bytes diarios Fuente: http://www-01.ibm.com/software/data/bigdata/ Datos por todos lados 340 Millones de Tweets por día 4000 tweets por segundo Fuente: blog.twitter.com
  • 5. Voldemort NoSQL CouchDB BigTable Amazon DynamoDB
  • 6. CouchDB Documentos JSON Javascript para peticiones MapReduce HTTP para formar un API
  • 7. 1. Base de Datos orientada en Documentos { “_id”: “453453406456456”, “_rev”: “5345436475658”, “moneda”: “Bs”, “productos”: * { “nombre”: “Manzana”, “precio”: 20, … }, … ], “fecha”: “2012-08-12T13:15:56.684+0000”, “cantidad”: 2, “estado”: “cerrado” … }
  • 8. 2. Peticiones mediante Documentos de Diseño { "_id": "_design/Compra", "_rev": "371-b2bdc2ce5dd269017f006595328a66ad", "language": "javascript", "views": { “por_fecha_compra": { "map": “ function(doc) { if (doc.fecha && doc.id_usuario && doc.estado === ‘cerrado') emit([doc.id_usuario,doc.fecha], doc); }“ }} }
  • 9. ¿Por qué NoSQL y CouchDB? Los datos de la vida real son almacenados en documentos Almacenamiento de la aplicación completa
  • 10. ¿Por qué NoSQL y CouchDB? Diseño sin esquemas rígidos Fácil administración, backup, replicación y trabajo offline
  • 12. CouchDB & Android Instalación Couchbase Fuente: https://github.com/couchbase/Android-Couchbase
  • 13. CouchDB & Android Instalación Ektorp Fuente: https://github.com/helun/Ektorp
  • 14. CouchDB & Android Inicialización de CouchDB 1. Creación de instancia ICouchbaseDelegate private final ICouchbaseDelegate mDelegate = new ICouchbaseDelegate() { @Override public void couchbaseStarted(String host, int port) {} @Override public void exit(String error) {} };
  • 15. CouchDB & Android Inicialización de CouchDB 2. Declaración de Servicio para Couchbase private ServiceConnection couchServiceConnection;
  • 16. CouchDB & Android Inicialización de CouchDB 3. Método de Inicio de Couchbase public void startCouchbase() { CouchbaseMobile couch = new CouchbaseMobile(getBaseContext(), mCallback); couchServiceConnection = couch.startCouchbase(); }
  • 17. CouchDB & Android Inicialización de CouchDB 3. Llamada al método startCouchbase public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... startCouchbase(); }
  • 18. CouchDB & Android Inicialización de Ektorp 1. Creación del Cliente HTTP public void couchbaseStarted(String host, int port) { httpClient = new AndroidHttpClient.Builder() .host(host) .port(port) .username(username) .password(password) .build(); }
  • 19. CouchDB & Android Inicialización de Ektorp 2. Conexión con el servidor de CouchDB CouchDbInstance dbInstance = new StdCouchDbInstance(httpClient); CouchDbConnector db = new StdCouchDbConnector("mydatabase", dbInstance); db.createDatabaseIfNotExists();
  • 20. CouchDB & Android Manejo de la Base de Datos 1. Creación de Documento de Compra public class Compra extends CouchDbDocument { private int id; private double total; private List<Producto> productos; … }
  • 21. CouchDB & Android Manejo de la Base de Datos 2. CRUD para los documentos de Compra public class CompraRepository extends CouchDbRepositorySupport<Compra> { public CompraRepository(CouchDbConnector db) { super(Compra.class, db); } }
  • 22. CouchDB & Android Manejo de la Base de Datos 3. Ejemplos de manipulación de BD compraRepository = new CompraRepository (couchDbConnector); Compra c = compraRepository.get(id); // Lectura de Compra por ID couchDbConnector.create( c ); // Creación de documento de Compra compraRepository.update( c ); // Actualización de documento de Compra couchDbConnector.delete( c ); // Eliminación de documento de Compra
  • 23. CouchDB & Android Manejo de la Base de Datos 4. Peticiones en CouchDB ViewQuery query = new ViewQuery() .designDocId("_design/Compra") .viewName(“por_fecha_compra") .key(“31-01-2013"); List<Compra> compras = db.queryView(query, Compra.class);
  • 25. Enlaces de interés Couchbase – http://www.couchbase.com Ektorp – http://goo.gl/dDKC0 Couchbase Android – http://goo.gl/MMca5 Cloudant – http://www.cloudant.com
  • 26. Gracias por su atención, ¿Preguntas? Ricardo Monagas Director General de Uppersky Twitter: @rmmonagas Slideshare: http://goo.gl/GlngJ Email: ricardo.monagas@uppersky.co