Couchdb
-
Upload
kota-sakoda -
Category
Documents
-
view
3.061 -
download
0
Transcript of Couchdb
自己紹介• cohtan ( Kota Sakoda )
• フリーランスプログラマ
• 九州大学大学院テクニカルスタッフ
• 知育玩具のショップの副店長
• 不定期ミュージシャン(ドラマー)
• codecheck.in のサーバーを管理
2009年6月1日月曜日
Agenda
• 半構造DBであるCouchDBを触ってみたので紹介します
• スライド半分・デモ半分の内容です
2009年6月1日月曜日
What’s CouchDB?
• Erlangで実装された半構造DB
• ドキュメント指向(Not Relational!)
• 通信は全てRESTful API
• 問合せはSQLではなくMapReduce
• N-Master Replication
2009年6月1日月曜日
Erlang
2009年6月1日月曜日
Erlang
• もともと分散処理に強い言語
• 最初からマルチコア対応
• 0.9.0のソースコードはたったの11067行!
($ cat src/couchdb/*.erl | wc)
2009年6月1日月曜日
Document Oriented
2009年6月1日月曜日
Document Oriented
• RDBのようにスキーマは存在しない
• 1レコードをJSONフォーマットで表現
• JSONの定義はいつでも好きなように追加・変更・削除が可能
• 多次元の構造が可能
2009年6月1日月曜日
{ “_id”: “ABCDEFG”, “_rev”: “1-AB123C”, “type”: “person”, “name”: “Kota Sakoda”, “age”: 29, “computer”: [”MacBook Air”, “MacBook”, “Inspiron Mini 12”], }
2009年6月1日月曜日
{ “_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日月曜日
RESTful API
2009年6月1日月曜日
RESTful API
• CreteHTTP PUT /dbname/docid
• ReadHTTP GET /dbname/docid
• UpdateHTTP PUT /dbname/docid
• DeleteHTTP DELETE /dbname/docid
2009年6月1日月曜日
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日月曜日
MapReduce Framework
2009年6月1日月曜日
MapReduce Framework
• JavaScriptでMapReduce!
• MapはJSONドキュメントの中から情報を抽出してKeyValueの形に整形する処理
• ReduceはKeyValueの形に整形された情報を使った処理
2009年6月1日月曜日
{ “_id”:“ABCDEFG”, “_rev”:“1-A1B2C3”, “tag”:“perl couchdb cpan”, “title”:”AnyEvent::CouchDB”, “href”:”http://search.cpan.org/~beppu/AnyEvent-CouchDB/”}
2009年6月1日月曜日
// Map Functionfunction(doc) { if(doc.tag.match(/couchdb/i){ emit(doc.title, doc.href); }}
2009年6月1日月曜日
Result2009年6月1日月曜日
// Map Functionfunction(doc) { var tags = doc.tag.split(“ “); for(var i in tags) { emit(tags[i], 1); }}// Reduce Functionfunction(keys, values) { return sum(values);}
2009年6月1日月曜日
Result2009年6月1日月曜日
N-Master Replication
2009年6月1日月曜日
$ curl -X POST --data \'{”source”:”http://remote:5984/somedb”,”target”:”somedb”}' \http://localhost:5984/_replicate
2009年6月1日月曜日
Replication Complete
2009年6月1日月曜日
!!!
2009年6月1日月曜日
こんだけ!?
2009年6月1日月曜日
N-Master Replication
• Master - Slaveとかいう概念がない
• 差分コピー
• source, targetは双方向に切替可能
• 全部マスター!※厳密にはコンフリクトは発生する
2009年6月1日月曜日
Demo
2009年6月1日月曜日
Demo
• cohtanのDeliciousのブックマークを全てダンプし、CouchDBに入れています
• それを使って各種デモAll Document, Design Document, Temporary View, created viewのデモ
2009年6月1日月曜日
CouchApp
2009年6月1日月曜日
CouchApp
• CouchDBのDesign Documentを使ったアプリケーションを手軽に構築/同期するPython Framework
• Pythonの知識はほとんど必要無し
• 基本的にはHTMLとJavaScriptでアプリケーションを作成
2009年6月1日月曜日
Sofa
2009年6月1日月曜日
Sofa
• CouchAppで作られたブログエンジン
• CouchDBスタンドアローンで動作
2009年6月1日月曜日
Demo
2009年6月1日月曜日
Demo
• Sofaの実際の動きをDemo
2009年6月1日月曜日
まとめ• Web ApplicationにFitしやすそう
• RESTfulとJSONなので言語を選ばない
• スキーマレスという自由
• プロトタイプを作る時に最適
• Scaffold以来の衝撃(個人的に)
2009年6月1日月曜日
ご静聴ありがとうございました
参考情報のまとめ : http://delicious/com/cohtan/couchdb
2009年6月1日月曜日