på Android ( Relax ?)

27
på Android (Relax?) @glennbech @baksiaOslo [email protected] http://www.baksia.org http://www.glennbech.com

description

på Android ( Relax ?). @ glennbech @ baksiaOslo g [email protected] http://www.baksia.org http://www.glennbech.com. Agenda. Litt om CouchDB Demo CouchDB på android devicer Hvorfor? Hvordan? Et par alternativer (Demo). CouchDB …?*. Godt sted å starte. - PowerPoint PPT Presentation

Transcript of på Android ( Relax ?)

Page 1: på Android ( Relax ?)

på Android (Relax?)

@[email protected]@inmeta.comhttp://www.baksia.orghttp://www.glennbech.com

Page 2: på Android ( Relax ?)

AgendaAgenda

• Litt om CouchDB

• Demo

• CouchDB på android devicer

• Hvorfor?

• Hvordan? Et par alternativer

• (Demo)

Page 3: på Android ( Relax ?)

CouchDB …?*CouchDB …?*

Page 5: på Android ( Relax ?)

Lotus Notes askSam Apstrata Datawasp CRX MUMPSDatabase UniVerse

UniData Jackrabbit CouchDB FleetDB MongoDB GemFire

Enterprise OrientDB RavenDB Redis StrokeDB Terrastore

ThruDB Persevere DBSlayer

DokumentorientertDokumentorientert

Page 6: på Android ( Relax ?)

JSON basert og «Skjemaløst»JSON basert og «Skjemaløst»

{ "_id": "BCCD12CBB", "type": "person", "name": "Darth Vader", "age": 63, "headware": ["Helmet", "Sombrero"], "dark_side": true}

{ "_id": "BCCD12CBC", "type": "person", "name": "Luke", "age": 35, "powers": ["Pull", "Jedi Mind Trick"], "dark_side": false}

Page 7: på Android ( Relax ?)

HTTP REST BasertHTTP REST Basert

SQL REST

Insert into… HTTP PUT /db/id

Select * from HTTP GET /db/id

Update HTTP PUT /db/id

Delete HTTP DELETE /db/id

DBA HTTP GET /mydb/, HTTP GET/_all_dbs,HTTP PUT /_replicate, HTTP POST /mydb/_bulk_docs

Page 8: på Android ( Relax ?)

«World class replication»«World class replication»

• Multi master replikering som oppdager konflikter

• «Eventual Consistency»

Page 9: på Android ( Relax ?)

SpørringerSpørringer

SQL

> Select id, name from Person

CouchDB

Function (doc) {

emit(doc._id, doc.name)

}

Page 10: på Android ( Relax ?)

SpørringerSpørringer

Page 11: på Android ( Relax ?)

«Views» Reduce«Views» Reduce

SQL

> Select darkside, count(*) from Person group by darkside

Page 12: på Android ( Relax ?)

«Views» Reduce«Views» Reduce

Page 13: på Android ( Relax ?)

Liten Demo?Liten Demo?

• Starte server

• http://46.137.75.167:5984/_all_dbs

• http://46.137.75.167:5984/_utils

• curl -X PUT http://46.137.75.167:5984/anewdb• curl -X DELETE http://46.137.75.167:5984/anewdb

Page 14: på Android ( Relax ?)

Android + couch Match made in heaven?Android + couch Match made in heaven?

• Android har god rammeverstøtte for JSON & HTTP

Page 15: på Android ( Relax ?)

Couch DB på Android?Couch DB på Android?

Page 16: på Android ( Relax ?)

Scenario #1Scenario #1

• Full funksjonalitet i områder uten nettdekning/variabel dekning

• Økonomiske hensyn (Roaming? Synkronisere data over WIFI)

Page 17: på Android ( Relax ?)

Scenario #1Scenario #1

Replication

OFFLINE

[ONLINE]

Page 18: på Android ( Relax ?)

Scenario 2Scenario 2

• Skrivehastighet viktig, Nettverk ingen opsjon• «Runkeeper»• Telemetri

Page 19: på Android ( Relax ?)

Scenario #2Scenario #2

POST http://127.0.0.1:5984/db/_bulk_docs

Page 20: på Android ( Relax ?)

Scenario #3 «continous»Scenario #3 «continous»

GET /db/_changes?feed=continous&since=4

Delta (n1,n2,n3,n4)

Page 21: på Android ( Relax ?)

How to #1 «Quick & Dirty»How to #1 «Quick & Dirty»

Page 22: på Android ( Relax ?)

How to #1How to #1

•Adb forward tcp:80 tcp:5984

Page 23: på Android ( Relax ?)

How to #1How to #1

Page 24: på Android ( Relax ?)

How to #2 (Mye kulere)How to #2 (Mye kulere)

• Couchbase for Android

• Basert på Apache CouchDB

• Støtte for å pakke databasen sammen med Applikasjonen på under 5mb

Page 25: på Android ( Relax ?)

How to #2 Mye kulereHow to #2 Mye kulere

• Beta. Kun master på Github

• <9 timer siden sist modifikasjon ved min «git clone»

• Måtte laste ned Android Native Development KIT (NDK)

• Fikk ikke utviklingsmiljø på Windows 7 i gang (måtte bruke Ubuntu)

• Replikering via. Curl fungerer fint

• Jobber nå med Replikering initiert fra Android kode

• Ta gjerne en prat på Oslo mekaniske om dere er nysgjerrige

Page 26: på Android ( Relax ?)

KlientbibliotekKlientbibliotek

Noen forslag

• Jackson JSON (~200k) POJO Mapper mm.http://jackson.codehaus.org/

• Couch Droid. «Lightweight» (< 39k)http://nosql.mypopescu.com/post/371951782/droidcouch-android-library-for-couchdb

• AndCouch (Super lettvekt, en klasse, del av Couchbase)https://github.com/couchbaselabs/Android-Couchbase.git

Page 27: på Android ( Relax ?)

ReferanserReferanser

• http://horicky.blogspot.com/2008/10/couchdb-implementation.html

• http://wiki.apache.org/couchdb/Installing_on_Ubuntu

• http://guide.couchdb.org/

• http://www.youtube.com/watch?v=3RdcKWYGqig

• https://github.com/couchbaselabs/Android-Couchbase

• https://cloudant.com/