rotterdam.php couchdb
DESCRIPTION
TRANSCRIPT
![Page 1: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/1.jpg)
CouchDBrelax
![Page 2: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/2.jpg)
CouchDBrelax
Sander van de Graafsvdgraaf
![Page 3: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/3.jpg)
RELAX...
![Page 4: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/4.jpg)
PERFORM LIKE A PR0N STAR
![Page 5: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/5.jpg)
TOPICS
•NoSQL
• CouchDB in a nutshell
•Querying
•map/reduce
• Fulltext search
• CouchApps
![Page 6: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/6.jpg)
NOSQL
![Page 7: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/7.jpg)
IT’S A MOVEMENT
![Page 8: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/8.jpg)
1998
![Page 9: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/9.jpg)
![Page 10: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/10.jpg)
![Page 11: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/11.jpg)
![Page 12: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/12.jpg)
![Page 13: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/13.jpg)
![Page 14: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/14.jpg)
![Page 15: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/15.jpg)
![Page 16: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/16.jpg)
![Page 17: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/17.jpg)
Carlo Strozzi
![Page 18: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/18.jpg)
NOSQL == Not Only SQL
![Page 19: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/19.jpg)
“[The NoSQL movement] departs from the relational model altogether, it should therefore have been called more appropriately ‘NoREL’, or something to that effect.”
- Carlo Strozzi
![Page 20: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/20.jpg)
LANDSCAPE
![Page 21: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/21.jpg)
DISTRIBUTED VS NON-DISTRIBUTED
Distributed Non distributedAmazon Dynamo Redis
Amazon S3 Tokyo Tyrant
Scalaris MemcacheDb
CouchDB Amazon SimpleDb
Voldemort
Riak
MongoDb
BigTable
Cassandra
HyperTable
HBase
source: Vineet Gupta http://bit.ly/5kuQgB
![Page 22: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/22.jpg)
DATAMODEL STORAGE
Key/Value Document Column
Amazon Dynamo Amazon SimpleDb Cassandra
Amazon S3 CouchDB Google BigTable
Redis MongoDb HBase
Scalaris Riak Hyperbase
Voldemort
![Page 23: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/23.jpg)
STORAGE
Memory Configurable Disk
Scalaris BigTable CouchDB
Redis Cassandra MongoDb
Hbase Riak
HyperTable Voldemort
![Page 24: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/24.jpg)
CouchDBrelax
![Page 25: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/25.jpg)
![Page 26: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/26.jpg)
![Page 27: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/27.jpg)
![Page 28: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/28.jpg)
![Page 29: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/29.jpg)
![Page 30: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/30.jpg)
JAVASCRIPT
![Page 31: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/31.jpg)
NUTSHELL
![Page 32: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/32.jpg)
SPEED
![Page 33: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/33.jpg)
APPEND ONLY
![Page 34: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/34.jpg)
NO REPAIR NEEDED
![Page 35: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/35.jpg)
COMPACTING
![Page 36: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/36.jpg)
HTTP SERVER
![Page 37: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/37.jpg)
CAP
![Page 38: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/38.jpg)
CAP
CouchDB
![Page 39: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/39.jpg)
EVENTUALLY CONSISTENT
CouchDB
![Page 40: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/40.jpg)
ALLTHINGSDISTRIBUTED.COM
![Page 41: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/41.jpg)
FULL REST API
![Page 42: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/42.jpg)
REST
• GET
• PUT
• POST
•DELETE
• COPY
• SELECT
• UPDATE
• INSERT
•DELETE
• ...
![Page 43: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/43.jpg)
![Page 44: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/44.jpg)
JSON{ total_rows: 2, offset: 0, rows: [ { id: '_design/foobar', key: '_design/foobar', value: { rev: '5-982b2fc36835715b2aae54609b5d5f1e' } }, { id: 'f0e1fd96eb6e094f74dda8d949000a6a', key: 'f0e1fd96eb6e094f74dda8d949000a6a', value: { rev: '1-86bca407fce8234a63c90ff549b56b10' } }, ]}
![Page 45: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/45.jpg)
REPLICATION
![Page 46: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/46.jpg)
CouchDBrelax
![Page 47: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/47.jpg)
CouchDBrelax
CouchDBrelax
![Page 48: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/48.jpg)
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
![Page 49: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/49.jpg)
CouchDBrelax
CouchDBrelax
![Page 50: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/50.jpg)
CouchDBrelax
CouchDBrelax
CouchDBrelax
![Page 51: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/51.jpg)
CouchDBrelax
CouchDBrelax
CouchDBrelax
Laptop Desktop
Phone
![Page 52: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/52.jpg)
CouchDBrelax
CouchDBrelax
CouchDBrelax
US NL
![Page 53: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/53.jpg)
CouchDBrelax
CouchDBrelax
CouchDBrelax
IDG US IDG AUSTRALIA
CouchDBrelax
CouchDBrelax
IDG NL IDG DE
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
![Page 54: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/54.jpg)
CouchDBrelax
CouchDBrelax
CouchDBrelax
IDG US IDG Australia
CouchDBrelax
CouchDBrelax
IDG NL IDG UK
CouchDBrelax
CouchDBrelax CouchDB
relax
CouchDBrelax
IDG Poland IDG Romania
IDG Spania IDG Portugal
IDG Germany IDG Brasil IDG Ghana IDG Hungary
IDG India IDG Thailand IDG Japan IDG Vietnam
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
CouchDBrelax
![Page 55: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/55.jpg)
P2P WEB
![Page 56: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/56.jpg)
![Page 57: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/57.jpg)
![Page 58: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/58.jpg)
QUERYING
![Page 59: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/59.jpg)
GET /documents/123
SELECT * FROM documents WHERE id = 123
![Page 60: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/60.jpg)
GET /documents/123PUT /documents/123POST /documents/123DELETE /documents/123
etc.
SELECT * FROM documents WHERE id = 123
![Page 61: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/61.jpg)
MAP/REDUCE
![Page 62: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/62.jpg)
![Page 63: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/63.jpg)
INPUT
IP Bytes
212.122.174.13 18271
212.122.174.13 191726
212.122.174.13 198
74.119.8.111 91272
74.119.8.111 8371
212.122.174.13 43
![Page 64: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/64.jpg)
MAPPER => REDUCER
IP Bytes
212.122.174.13
18271
212.122.174.13191726
212.122.174.13198
212.122.174.13
43
74.119.8.11191272
74.119.8.1118371
![Page 65: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/65.jpg)
AFTER REDUCE
IP Bytes
212.122.174.13 210238
74.119.8.111 99643
![Page 66: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/66.jpg)
MAP/REDUCE
SELECT COUNT(foo)FROM documentsWHERE 1GROUP BY foo;
![Page 67: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/67.jpg)
MAP/REDUCE
![Page 68: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/68.jpg)
MAP/REDUCE
function(doc) { emit(doc.foo, doc);}
![Page 69: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/69.jpg)
MAP/REDUCE
![Page 70: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/70.jpg)
MAP/REDUCE
function(keys, values, rereduce) { return sum(values);}
![Page 71: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/71.jpg)
MAP/REDUCE
![Page 72: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/72.jpg)
COUCHDB-LUCENEhttp://github.com/rnewson/couchdb-lucene
![Page 73: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/73.jpg)
CONFIG[external]fti=/path/to/python /path/to/couchdb-lucene/tools/couchdb-external-hook.py
[httpd_db_handlers]_fti = {couch_httpd_external, handle_external_req, <<"fti">>}
![Page 74: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/74.jpg)
http://127.0.0.1:5984> GET /foobar/_design/foobar
![Page 75: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/75.jpg)
_DESIGN
{ _id: '_design/foobar', _rev: '8-03a6bc983c721b1cc0ae4b461326bc31', language: 'javascript', views: { foo: { map: 'function(doc) {\n emit(doc.foo,1);\n}', reduce: 'function(keys, values, rereduce) {return sum(values);}' } }}
![Page 76: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/76.jpg)
_DESIGN
{ _id: '_design/foobar', _rev: '8-03a6bc983c721b1cc0ae4b461326bc31', language: 'javascript', views: { foo: { map: 'function(doc) {\n emit(doc.foo,1);\n}', reduce: 'function(keys, values, rereduce) {return sum(values);}' } }, fulltext: { by_subject: { index:"function(doc) { var ret=new Document(); ret.add(doc.subject); return ret }" }, }}
![Page 77: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/77.jpg)
_DESIGN
function(doc) { var ret=new Document(); ret.add(doc.subject); return ret}
![Page 78: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/78.jpg)
_DESIGN
function(doc) { var result = new Document(); result.add(doc.subject, {"field":"subject", "store":"yes"}); result.add(doc.content, {"field":"subject"}); result.add(new Date(), {"field":"indexed_at"}); return result;}
![Page 79: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/79.jpg)
http://127.0.0.1:5984> GET /foobar/_fti/_design/foo/by_subject?q=foobar
![Page 80: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/80.jpg)
http://127.0.0.1:5984> GET /foobar/_fti/_design/foo/by_subject?q=foobar
![Page 81: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/81.jpg)
COUCHAPPShttp://github.com/couchapp/couchapp
![Page 82: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/82.jpg)
“Distributed, scalable, web applications you say?
omgwtfbbq!?!1!!!11!1!eleven”
![Page 83: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/83.jpg)
_attachments
![Page 84: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/84.jpg)
CouchDBrelax
CouchDBrelax
CouchDBrelax
![Page 86: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/86.jpg)
LISTS
http://127.0.0.1:5984> GET /relax/_design/relax/_list/posts/all/foobarHTTP/1.1 200 OKVary: AcceptTransfer-Encoding: chunkedServer: CouchDB/0.11.0 (Erlang OTP/R13B)Etag: "DZZ19EPLWLHI89K1FOW9DGFT5"Date: Sun, 11 Jul 2010 09:55:42 GMTContent-Type: text/html
<h1>ponies</h1><p>rock!</p>
![Page 87: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/87.jpg)
CouchDBrelax
![Page 88: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/88.jpg)
CouchDBrelax
![Page 89: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/89.jpg)
COUCHDBXhttp://janl.github.com/couchdbx/
![Page 90: Rotterdam.php CouchDB](https://reader038.vdocuments.net/reader038/viewer/2022102921/54620a97b4af9f491c8b4599/html5/thumbnails/90.jpg)
Q?