Más contenido relacionado
La actualidad más candente (20)
Similar a Couch Db勉強会0623 by yssk22 (20)
Couch Db勉強会0623 by yssk22
- 1. 2009/06/23
webjourney.org
Yohei Sasaki / yssk22
CouchDB or Erlangを使って
やってみたいアプリケーション
- 2. 自己紹介
Yohei Sasaki
http://www.yssk22.info/
仕事の時は ysasaki2
developerWorks にCouchDBの記事を書いてます。
5回連載 3ヶ月で終わる予定が、1年で4回 orz
趣味の時は yssk22 (← 今日はこっち)
http://d.hatena.ne.jp/yssk22
- 6. OpenSocial + CouchDB
= Open Web Application
OpenSocial
自由にアプリケーションを持ち運べる
CouchDB
自由にデータを持ち運べる
データとアプリケーションに
明確な境界など要らない?
- 7. 2009/06/23
webjourney.org
Yohei Sasaki / yssk22
CouchDB で始める
ActiveRecord からの脱却
- 11. ActiveRecord による実装
pages
pages - 各ページのデータ
gadget_instances
- ページに貼り付けられた
gadgetのデータ
gadgets
gadget_instance
- サイトにインストールされた
s
gadget のマスターデータ
gadgets 意外と簡単そう???
- 12. ActiveRecord による実装
class GadgetInstance
pages
< ActiveRecord::Base
validates_length_of :title, ...
validates ...
serialize :parameters
gadget_instance
end
gadget
結局KeyValueにシリアライズ!
- 14. 抱える問題 = クエリ
GadgetデータをRDBに入れるのは簡単
ADO.NET の場合:: XML列にMapping (SQL Server)
Rails の場合:: YAMLで放り込む
Object → XML/YAML は比較的楽
しかし、クエリで取り出せない罠
XQuery 勉強する暇あったらORMなんか使いませんよ!
玉石混交のユーザーデータをフィルタできないなん
て!!
例えば、Feed Gadgetなら設定されたURLのランキングを
とりたい、とか。
- 17. Active Record => CouchDB
移植開始
中のロジックを変えるのが面倒だったの
で、ActiveRecord とインターフェースをそ
ろえた CouchDB Mapper 作る
3ヶ月ぐらいで、いい加減実装完了
CouchResource
http://github.com/yssk22/couch_resource/tree/mast
er
- 18. 結果
class GadgetInstance < CouchResource::Base
string :title, :validates => [:length_of => ..]
object :parameters
end
GadgetInstance.find(...) でCouchDBのビューが呼ばれるので、
クエリもサポート!
Gadget 開発者が自由にデータを使える(クエリも含めて!
ActiveRecord のノリで開発できる!
ほとんど記法は同じ。
migration 部分はクラスに直接かく
他のCouchDB Mapper でも property :title, :as => :string とか。
- 19. CouchResource
○
バリデーション: validates_xxx サポート
コールバック: before|after_xxx サポート
JSONデータ型 : string :title などのようにマッ
ピング時の型変換ルールをかける
クエリ : find メソッド使える
△
関連 : habtm, has_many, belongs_to などはいら
ないので作らなかった
CouchRest のようにストリーミングしない。
- 21. とりあえず結論
serializeとか STI (Single Table Inheritance / 同じテーブルを複数
クラスで使い回す)とか使いたくなってくるところには
CouchDBみたいなもの
入れる(INSERT/UPDATE)だけなら、そこまで無理なくていい
(item_name, value) なんていうテーブルがあったら、
CouchDBを検討してみるといい!
Form の項目をDBに保存しているときとか。
がんばればActiveRecordっぽく、CouchDBを使える!
Merb::DataMapper のCouchDB Adapterももあるらしい。
CouchDB は、(alpha stageっていってるけど)わりと素直に動
きます。
compaction さえ忘れなければ。
- 24. 結果
jQuery から 直接 CouchDB たたけばいい
CouchDB にビジネスロジック書いておけば
OK
奥の手External Process
CouchDB と任意のコマンドラインプロセスをPipeで
つなぐことができる
script/runner でもOK
さようならRails, こんにちはCouchDB
CouchAppもヨロシク。
- 26. Ruby off Rails
Rails で RDB 使わないのは敷居が高すぎる
問い合わせ;
MySQLで動かないようなんだけどSQLiteじゃな
いとだめ?どのDB使えばいいの?
回答:
いや、RDBじゃだめw CouchDBインストールして。
結果:
連絡が途絶えた
- 27. CouchResource
×
終了のお知らせ。
ActiveRecord 思想にこだわった時点で終了のお
知らせだったか。
trac にかいといたドキュメントがlost
CouchRest がいい。
がんばって作ってみたけど、だめでした。