Post on 16-Apr-2017
Introducing CouchDB
Tuesday November 11, 2009Hatem 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
hatem@php.net / @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
NoSQLNon-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 One
Ubuntu : 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 ?