2. 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
3. How to build faster, bigger, reliable websites...
12. CouchDB is NOT
● A relational database.
● A replacement for relational databases.
● An object-oriented database.
13. 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
14. 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
20. 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
21. How to request this document ?
// response is also in JSON :
// {"_id":"323409622afb6477e7108684785256b8",
"_rev":"1-3182c819b0f98858c54ad920d6c44498",
"Name":"Makkah",
"Zip":21955}
22. What about updating ?
// notice in the response we have revision changed to 2
// {"ok":true,
"id":"323409622afb6477e7108684785256b8",
"rev":"2-03779debc847f783493a69e61bd98560"}
23. 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
25. 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