Couch Db勉強会0623 by yssk22

1,589 views

Published on

CouchDB 勉強会で発表した内容です。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,589
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Couch Db勉強会0623 by yssk22

  1. 1. 2009/06/23 webjourney.org Yohei Sasaki / yssk22 CouchDB or Erlangを使って やってみたいアプリケーション
  2. 2. 自己紹介  Yohei Sasaki  http://www.yssk22.info/  仕事の時は ysasaki2  developerWorks にCouchDBの記事を書いてます。  5回連載 3ヶ月で終わる予定が、1年で4回 orz  趣味の時は yssk22 (← 今日はこっち)  http://d.hatena.ne.jp/yssk22
  3. 3. WebJourney http://journal.mycom.co.jp/series/webtool/026/index.html
  4. 4. WebJourney  iGoogle を Rails で作ってみたもの  jQuery + Rails + CouchDB 0.9.0 で実装  昔はMySQL(その話は後ほど)
  5. 5. さらに、今なら OpenSocial
  6. 6. OpenSocial + CouchDB = Open Web Application  OpenSocial  自由にアプリケーションを持ち運べる  CouchDB  自由にデータを持ち運べる データとアプリケーションに 明確な境界など要らない?
  7. 7. 2009/06/23 webjourney.org Yohei Sasaki / yssk22 CouchDB で始める ActiveRecord からの脱却
  8. 8. これからの話 "CouchDBに興味があって、最近始めた"~ "CouchDBのアプリを作ってみようかなっ て思い始めた"人くらいを主なターゲット にしています。  Rails 使い がCouchDBのアプリを作ってみ ようかなー、と思い始めたときの話。  Relational DB から CouchDB へのreplace
  9. 9. 長年の悩み:: GadgetをRDBに保存するのは難しい  Gadget のデータ、スキーマ はユーザーが追加するまで 決められない。  Gadget は必要に応じて追加 開発するから最初からス キーマを定義できない
  10. 10. そうはいっても ActiveRecord + MySQL
  11. 11. ActiveRecord による実装 pages pages - 各ページのデータ gadget_instances - ページに貼り付けられた gadgetのデータ gadgets gadget_instance - サイトにインストールされた s gadget のマスターデータ gadgets 意外と簡単そう???
  12. 12. ActiveRecord による実装 class GadgetInstance pages < ActiveRecord::Base validates_length_of :title, ... validates ... serialize :parameters gadget_instance end gadget 結局KeyValueにシリアライズ!
  13. 13. GadgetInstance#parameters  Gadget 開発者がそれぞれのGadgetアプリ ケーションに応じて利用可能なフィールド  RSS のフィードURL  Blog Parts のようなJavaScript スクリプト  ... gi.parameters[:feed_url] = "http://...." とか gi.parameters[:script][:src] = "http://..." とか
  14. 14. 抱える問題 = クエリ  GadgetデータをRDBに入れるのは簡単  ADO.NET の場合:: XML列にMapping (SQL Server)  Rails の場合:: YAMLで放り込む  Object → XML/YAML は比較的楽  しかし、クエリで取り出せない罠  XQuery 勉強する暇あったらORMなんか使いませんよ!  玉石混交のユーザーデータをフィルタできないなん て!!  例えば、Feed Gadgetなら設定されたURLのランキングを とりたい、とか。
  15. 15. そこでCouchDB
  16. 16. きっかけ  ロゴが気に入った。  勉強する時間が欲しかった。  特にErlang  HTTP  JSON  MapReduce  これなら、JavaScriptでクエリでき る!!
  17. 17. Active Record => CouchDB 移植開始  中のロジックを変えるのが面倒だったの で、ActiveRecord とインターフェースをそ ろえた CouchDB Mapper 作る  3ヶ月ぐらいで、いい加減実装完了  CouchResource  http://github.com/yssk22/couch_resource/tree/mast er
  18. 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. 19. CouchResource  ○  バリデーション: validates_xxx サポート  コールバック: before|after_xxx サポート  JSONデータ型 : string :title などのようにマッ ピング時の型変換ルールをかける  クエリ : find メソッド使える  △  関連 : habtm, has_many, belongs_to などはいら ないので作らなかった  CouchRest のようにストリーミングしない。
  20. 20. Good by Relational Database
  21. 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 さえ忘れなければ。
  22. 22. Do you realy need app server?
  23. 23. わき上がる疑問:: Rails要るの? JavaScriptで バリデーションとか Rails が Hashを Ruby でバリデーションとか CouchResourceに CouchResourceを Hash経由でJSONに
  24. 24. 結果  jQuery から 直接 CouchDB たたけばいい  CouchDB にビジネスロジック書いておけば OK  奥の手External Process  CouchDB と任意のコマンドラインプロセスをPipeで つなぐことができる  script/runner でもOK  さようならRails, こんにちはCouchDB  CouchAppもヨロシク。
  25. 25. Good by Rails
  26. 26. Ruby off Rails  Rails で RDB 使わないのは敷居が高すぎる  問い合わせ;  MySQLで動かないようなんだけどSQLiteじゃな いとだめ?どのDB使えばいいの?  回答:  いや、RDBじゃだめw CouchDBインストールして。  結果:  連絡が途絶えた
  27. 27. CouchResource  ×  終了のお知らせ。  ActiveRecord 思想にこだわった時点で終了のお 知らせだったか。  trac にかいといたドキュメントがlost  CouchRest がいい。  がんばって作ってみたけど、だめでした。
  28. 28. CouchDBで Web Appを作る。  まさに CouchApp の世界  セキュリティは[あとで]。  とりあえず、リラックスすれば、世の中みんな いい人しかいないと思えてくる!!!
  29. 29. @これから

×