Upload
selvamanisampath
View
2.196
Download
0
Tags:
Embed Size (px)
Citation preview
Introducing CouchDBTuesday November 11, 2009
Hatem Ben Yacoub
Who am I ?
● Hatem Ben Yacoub● IT Consultant● Senior Systems Architect● PHP Expert● e-Government Specialist● Energy Engineer● Open Source Evangelist● http://phpmagazine.net ● [email protected] / @hatem / http://hatem.tel
How to build faster, bigger, reliable websites...
Scalability
Scalability
~==
Database optimization
RDBMS … old fashion
… new fashion ??
NoSQL
“Not Only SQL”
Scaling writes
&
Scaling reads
NoSQL
Non-Distributed databases(Redis, MongoDB,CouchDB, Neo4j,Tokyo cabinet ...)
Distributed Databases(Cassandra, Hbase,
Riak, Scalaris...)
CouchDB is NOT
● A relational database.● A replacement for relational databases.● An object-oriented database.
CouchDB is
● OpenSource Database● RESTful API● Schema-less document store (document in JSON
format)● Multi-Version-Concurrency-Control model● User-defined query structured as map/reduce● Incremental Index Update mechanism● Multi-Master Replication model● Written in Erlang
Let's give it a try
Ubuntu 9.10 already uses couchdb (all POSIX systems supported)
Install the database server :
$sudo apt-get install couchdb
Test installation
CouchDB port 5984
CouchDB Management interface (Futon)
Create database test
Firebug
Creating a document with jQuery
// server respond with JSON also :// {"ok":true,"id":"323409622afb6477e7108684785256b8","rev":"1-3182c819b0f98858c54ad920d6c44498"}// including the document id and revision, and a confirmation variable ok=true
How to request this document ?
// response is also in JSON :// {"_id":"323409622afb6477e7108684785256b8","_rev":"1-3182c819b0f98858c54ad920d6c44498","Name":"Makkah","Zip":21955}
What about updating ?
// notice in the response we have revision changed to 2// {"ok":true,"id":"323409622afb6477e7108684785256b8","rev":"2-03779debc847f783493a69e61bd98560"}
What about creating a view ?
// Server respond with {"ok":true,"id":"_design/render","rev":"1-f95a9b997f1081043fda1a34be76c47e"}
http://127.0.0.1:5984/test/_design/render/_show/code/480f17c996bcbd174ac64b976de47f79
Easy ?!
Why CouchDB
● Easy to use data storage (NoSQL)● Easy to integrate with web applications :
JavaScript, JSON● Scalability for large web applications :
Incremental Replication, bi-directional conflict detection and management
● Query-able and index-able● Offline by default
Who's using CouchDB ?
Relax
Ubuntu OneUbuntu : 10 million desktops worldwide
Loungeproxy-based partitioning/clustering framework
Mozilla RaindropNew messaging platform built on top of CouchDB
Thank you
Read more ...
● http://couchdb.org● http://planet.couchdb.org● http://horicky.blogspot.com/2008/10/couchdb-implementation.html● http://jan.prima.de ● http://damienkatz.net/ ● http://jchrisa.net
Questions ?