Introducing CouchDB

download Introducing CouchDB

If you can't read please download the document

Transcript of Introducing CouchDB

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

[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

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 ?