why couchdb?

32
Why CouchDB?

Upload: jun-wang

Post on 11-May-2015

1.480 views

Category:

Technology


1 download

DESCRIPTION

http://www.infoq.com/presentations/Why-CouchDB

TRANSCRIPT

Page 1: Why CouchDB?

Why CouchDB?

Page 2: Why CouchDB?

builtaka rebuilding on

contribute to

hack at

work at

Page 3: Why CouchDB?

So...

Why CouchDB?

Page 4: Why CouchDB?

because...

Data is Lonely

Page 5: Why CouchDB?

Lonely Data?

data access depends on (often API-less) app (esp. desktop)

web apps are a little better, but not always

API’s are not general meant for replication/backup

app may be open source, but data’s still tangled up (RDBMS)

Page 6: Why CouchDB?

Enter...

Page 7: Why CouchDB?

Time to Relax.

Page 8: Why CouchDB?

Meet CouchDB

coSQL Document Storage Database

JSON Documents + attachments

HTTP/REST (you already know the API)

Map/Reduce Views

Portable Standalone Applications

Replication for Freedom

Page 9: Why CouchDB?

JSON Documents

Your programming language supports JSON!Adapt data as your application changes.

{“json”: “key/value pairs”, “_id” : “some uuid”, “_rev”: “mvcc key”, “string keys”:

[1,2,3,”four”,null], “schema free”: “flexible”}

Page 10: Why CouchDB?

Attachments

text/html

image/png

application/ogg

application/pdf

text/javascript

text/css

etc...

Page 11: Why CouchDB?

HTTP / RESTyou already know the API

GET read

PUT create or update

DELETE delete

POST bulk operation

Page 12: Why CouchDB?

Map/Reduce Views

Page 13: Why CouchDB?

Some sample docs

{“docs”:[ {“user”: “Chris”, “points”: 3}, {“user”: “Joe”, “points”: 10}, {“user”: “Alice”, “points”: 5}, {“user”: “Mary”, “points”: 9}, {“user”: “Bob”, “points”: 7}, {“user”: ”Alice”, “points”: 3}]}

Page 14: Why CouchDB?

Map functionfunction(doc) { if (doc.user && doc.points) { emit(doc.user, doc.points); }}

// output{“rows”:[ {“key”: “Chris”, “value”: 3}, {“key”: “Joe”, “value”: 10}, {“key”: “Alice”, “value”: 5}, {“key”: “Mary”, “value”: 9}, {“key”: “Bob”, “value”: 7}, {“key”: ”Alice”, ”value”: 3}]}

Page 15: Why CouchDB?

Reduce functionfunction(keys, values, rereduce) { return sum(values);}

// output{"key":null,"value":37}

// output (?group=true){"rows":[ {"key":"Alice","value": 8}, {"key":"Bob", "value": 7}, {"key":"Chris","value": 3}, {"key":"Joe", "value": 10}, {"key":"Mary", "value": 9}]}

Page 16: Why CouchDB?

Built-in Reducers

_sum

_count

_stat

massively faster than JS reducers

Page 17: Why CouchDB?

Map/Reduce Queriesin CouchDB...

run over every document in the db

are views that create indexes

use keys and view collation for lookups

can do simple JOINs (?include_docs=true)

are typically written in JS

but can also be written in Erlang, Ruby, Python, and other languages

Page 18: Why CouchDB?

Portable, Standalone,Applications

CouchApps live inside CouchDB

application server style features in addition to map/reduce views:

_rewrite - URL rewriting

_show - output rendering

_list - output rendering of views

_update - document validation

.js, .css, .png - AJAX app assets

Page 19: Why CouchDB?

Replication for Freedomtriggered, incremental, filtered,

peer-based, interruptible, fabulous

Page 20: Why CouchDB?

Replication

append-only file format - MVCC

stateless HTTP API

“built of the Web” - Jacob Kaplan-Moss (of Django fame)

n-master replication

filterable with JS functions

can run continuous (on change)

Page 21: Why CouchDB?

so...

Why CouchDB?because it replicates!!

Page 22: Why CouchDB?

Web 2.5?

Page 23: Why CouchDB?

Web 2.0 Gave Us...

Cloud Powers!!1!

data-center sized processing & storage for all my junk

Crowd Powers

sharing stuff with everybody, all the time from anywhere, hurray

Page 24: Why CouchDB?

for that, we traded

ownership

privacy

security

safety

stability

sanity...?

Page 25: Why CouchDB?

Next, we need...

those things back

Page 26: Why CouchDB?

to get that, we needreplication

(saw that coming, probably)

closer data

closer apps

without the loss of our Cloud & Crowd Powers

big data storage & processing (as needed)

sharing with the world (as needed)

or via peer-based replication

Page 27: Why CouchDB?

Hop on CouchDB!

http://iriscouch.com/

http://couchbase.com/

http://cloudant.com/

http://couchdb.apache.org/

Page 28: Why CouchDB?

Apache CouchDBand friends

Iris Couch - single CouchDB “node” hosting; fast & simple setup

Couchbase Server or Cloudant’s BigCouch for big data

more “typical” cluster architectures

Couchbase Mobile for your iOS & Android Devices

PouchDB for browsers - IndexedDB CouchDB

Page 29: Why CouchDB?

So...

Page 30: Why CouchDB?

Let’s Replicate......EVERYTHING!!1!

take full advantage of CouchDB

the future is distributednot just data, but...queriesoutput formatsattachmentswhole applicationsand everything else in between

Page 31: Why CouchDB?

CouchDBdoes replicationyou get to do the other stuff

Page 32: Why CouchDB?

Thanks!any questions?

@bigbluehat - github.com/bigbluehat - [email protected]

@couchbase - couchbase.org - [email protected]