Está en la página 1de 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

También podría gustarte