Couchdb
- 2. • cohtan ( Kota Sakoda )
•
•
•
•
• codecheck.in
2009 6 1
- 3. Agenda
• DB CouchDB
•
2009 6 1
- 4. What’s CouchDB?
• Erlang DB
• Not Relational!
• RESTful API
• SQL MapReduce
• N-Master Replication
2009 6 1
- 6. Erlang
•
•
• 0.9.0 11067 !
($ cat src/couchdb/*.erl | wc)
2009 6 1
- 9. {
“_id”: “ABCDEFG”,
“_rev”: “1-AB123C”,
“type”: “person”,
“name”: “Kota Sakoda”,
“age”: 29,
“computer”:
[”MacBook Air”, “MacBook”, “Inspiron
Mini 12”],
}
2009 6 1
- 10. {
“_id”: “ABCDEFG”,
“_rev”: “2-AB123C”,
“type”: “person”,
“name”: “Kota Sakoda”,
“age”: 29,
“computer”:
[”MacBook Air”, “MacBook”, “Inspiron
Mini 12”, “SC430”],
“hobby”:{“program”:[”perl”,”erlang”]}
}
2009 6 1
- 12. RESTful API
• Crete
HTTP PUT /dbname/docid
• Read
HTTP GET /dbname/docid
• Update
HTTP PUT /dbname/docid
• Delete
HTTP DELETE /dbname/docid
2009 6 1
- 13. RESTful API
•
http://wiki.apache.org/couchdb/Basics
• Amazon EC2, ExtJS, C, C#, Erlang, Futon,
Haskell, Java, JavaScript, LISP, LotusScript,
Objective-C, Perl, PHP, Python, Ruby,
Smalltalk
2009 6 1
- 16. {
“_id”:“ABCDEFG”,
“_rev”:“1-A1B2C3”,
“tag”:“perl couchdb cpan”,
“title”:”AnyEvent::CouchDB”,
“href”:”http://search.cpan.org/
~beppu/AnyEvent-CouchDB/”
}
2009 6 1
- 17. // Map Function
function(doc) {
if(doc.tag.match(/couchdb/i){
emit(doc.title, doc.href);
}
}
2009 6 1
- 19. // Map Function
function(doc) {
var tags = doc.tag.split(“ “);
for(var i in tags) {
emit(tags[i], 1);
}
}
// Reduce Function
function(keys, values) {
return sum(values);
}
2009 6 1
- 22. $ curl -X POST --data
'{”source”:”http://remote:5984/
somedb”,”target”:”somedb”}'
http://localhost:5984/_replicate
2009 6 1
- 28. Demo
• cohtan Delicious
CouchDB
•
All Document, Design Document, Temporary View, created view
2009 6 1
- 30. CouchApp
• CouchDB Design Document
/
Python Framework
• Python
• HTML JavaScript
2009 6 1
- 32. Sofa
• CouchApp
• CouchDB
2009 6 1
- 34. Demo
• Sofa Demo
2009 6 1