Intro Couchdb

Preview:

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 ● 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

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 ?