SlideShare une entreprise Scribd logo
1  sur  29
2009/06/23
                   webjourney.org
               Yohei Sasaki / yssk22

CouchDB or Erlangを使って
やってみたいアプリケーション
自己紹介

 Yohei Sasaki
   http://www.yssk22.info/
   仕事の時は ysasaki2
     developerWorks にCouchDBの記事を書いてます。
       5回連載 3ヶ月で終わる予定が、1年で4回 orz


   趣味の時は yssk22 (← 今日はこっち)
     http://d.hatena.ne.jp/yssk22
WebJourney
http://journal.mycom.co.jp/series/webtool/026/index.html
WebJourney

 iGoogle を Rails で作ってみたもの
 jQuery + Rails + CouchDB 0.9.0 で実装
   昔はMySQL(その話は後ほど)
さらに、今なら OpenSocial
OpenSocial + CouchDB
= Open Web Application
 OpenSocial
   自由にアプリケーションを持ち運べる


          CouchDB
            自由にデータを持ち運べる



          データとアプリケーションに
           明確な境界など要らない?
2009/06/23
                   webjourney.org
               Yohei Sasaki / yssk22

CouchDB で始める
ActiveRecord からの脱却
これからの話

 "CouchDBに興味があって、最近始めた"~
 "CouchDBのアプリを作ってみようかなっ
 て思い始めた"人くらいを主なターゲット
 にしています。

 Rails 使い がCouchDBのアプリを作ってみ
  ようかなー、と思い始めたときの話。
 Relational DB から CouchDB へのreplace
長年の悩み::
GadgetをRDBに保存するのは難しい
 Gadget のデータ、スキーマ
  はユーザーが追加するまで
  決められない。
 Gadget は必要に応じて追加
  開発するから最初からス
  キーマを定義できない
そうはいっても
ActiveRecord + MySQL
ActiveRecord による実装
                            pages
pages                        - 各ページのデータ
                            gadget_instances
                             - ページに貼り付けられた
                               gadgetのデータ
                            gadgets
          gadget_instance
                             - サイトにインストールされた
                 s
                               gadget のマスターデータ



gadgets                     意外と簡単そう???
ActiveRecord による実装
                           class GadgetInstance 
pages
                             < ActiveRecord::Base
                             validates_length_of :title, ...
                             validates ...


                             serialize :parameters
         gadget_instance
                           end




gadget
                 結局KeyValueにシリアライズ!
GadgetInstance#parameters

 Gadget 開発者がそれぞれのGadgetアプリ
  ケーションに応じて利用可能なフィールド
  RSS のフィードURL
  Blog Parts のようなJavaScript スクリプト
  ...


 gi.parameters[:feed_url] = "http://...."
 とか
 gi.parameters[:script][:src] = "http://..."
 とか
抱える問題 = クエリ

 GadgetデータをRDBに入れるのは簡単
  ADO.NET の場合:: XML列にMapping (SQL Server)
  Rails の場合:: YAMLで放り込む

  Object → XML/YAML は比較的楽


 しかし、クエリで取り出せない罠
  XQuery 勉強する暇あったらORMなんか使いませんよ!
  玉石混交のユーザーデータをフィルタできないなん
  て!!
    例えば、Feed Gadgetなら設定されたURLのランキングを
     とりたい、とか。
そこでCouchDB
きっかけ

 ロゴが気に入った。
 勉強する時間が欲しかった。
  特にErlang
 HTTP
 JSON
 MapReduce
  これなら、JavaScriptでクエリでき
   る!!
Active Record => CouchDB
移植開始
 中のロジックを変えるのが面倒だったの
 で、ActiveRecord とインターフェースをそ
 ろえた CouchDB Mapper 作る

 3ヶ月ぐらいで、いい加減実装完了
  CouchResource
   http://github.com/yssk22/couch_resource/tree/mast
    er
結果
  class GadgetInstance < CouchResource::Base
       string :title, :validates => [:length_of => ..]

        object :parameters
  end

 GadgetInstance.find(...) でCouchDBのビューが呼ばれるので、
  クエリもサポート!
 Gadget 開発者が自由にデータを使える(クエリも含めて!
 ActiveRecord のノリで開発できる!
     ほとんど記法は同じ。
       migration 部分はクラスに直接かく
          他のCouchDB Mapper でも property :title, :as => :string とか。
CouchResource

 ○
  バリデーション: validates_xxx サポート
  コールバック: before|after_xxx サポート
  JSONデータ型 : string :title などのようにマッ
   ピング時の型変換ルールをかける
  クエリ : find メソッド使える
 △
  関連 : habtm, has_many, belongs_to などはいら
   ないので作らなかった
  CouchRest のようにストリーミングしない。
Good by
Relational
Database
とりあえず結論
 serializeとか STI (Single Table Inheritance / 同じテーブルを複数
  クラスで使い回す)とか使いたくなってくるところには
  CouchDBみたいなもの
     入れる(INSERT/UPDATE)だけなら、そこまで無理なくていい

 (item_name, value) なんていうテーブルがあったら、
  CouchDBを検討してみるといい!
     Form の項目をDBに保存しているときとか。

 がんばればActiveRecordっぽく、CouchDBを使える!
     Merb::DataMapper のCouchDB Adapterももあるらしい。

 CouchDB は、(alpha stageっていってるけど)わりと素直に動
  きます。
     compaction さえ忘れなければ。
Do you realy
   need
app server?
わき上がる疑問:: Rails要るの?


JavaScriptで
バリデーションとか


     Rails が Hashを          Ruby でバリデーションとか
     CouchResourceに



                      CouchResourceを
                      Hash経由でJSONに
結果

 jQuery から 直接 CouchDB たたけばいい
 CouchDB にビジネスロジック書いておけば
 OK
  奥の手External Process
    CouchDB と任意のコマンドラインプロセスをPipeで
     つなぐことができる
       script/runner でもOK


 さようならRails, こんにちはCouchDB
  CouchAppもヨロシク。
Good by
 Rails
Ruby off Rails

 Rails で RDB 使わないのは敷居が高すぎる
  問い合わせ;
    MySQLで動かないようなんだけどSQLiteじゃな
     いとだめ?どのDB使えばいいの?
  回答:
    いや、RDBじゃだめw CouchDBインストールして。
  結果:
    連絡が途絶えた
CouchResource

 ×
  終了のお知らせ。
  ActiveRecord 思想にこだわった時点で終了のお
   知らせだったか。
  trac にかいといたドキュメントがlost
  CouchRest がいい。




 がんばって作ってみたけど、だめでした。
CouchDBで Web Appを作る。

 まさに CouchApp の世界
  セキュリティは[あとで]。
   とりあえず、リラックスすれば、世の中みんな
    いい人しかいないと思えてくる!!!
@これから

Contenu connexe

Tendances

MySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearchMySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearchKentaro Yoshida
 
SolrとElasticsearchの比較
SolrとElasticsearchの比較SolrとElasticsearchの比較
SolrとElasticsearchの比較genta kaneyama
 
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_codeSugawara Genki
 
まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?IRI MO
 
閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とは閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とはMuyuu Fujita
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"Kentaro Yoshida
 
小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレMuyuu Fujita
 
RESTful APIとしてのRailsとクライアントとしてのJavaScript
RESTful APIとしてのRailsとクライアントとしてのJavaScriptRESTful APIとしてのRailsとクライアントとしてのJavaScript
RESTful APIとしてのRailsとクライアントとしてのJavaScriptNaoto Koshikawa
 
Elasticsearch at CrowdWorks
Elasticsearch at CrowdWorksElasticsearch at CrowdWorks
Elasticsearch at CrowdWorks佑介 九岡
 
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51civicpg
 
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバElasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバShinsuke Sugaya
 
CouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall TokyoCouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall TokyoYohei Sasaki
 
はじめての datadog
はじめての datadogはじめての datadog
はじめての datadogNaoya Nakazawa
 
第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEE第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEEcivicpg
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2Moto Yan
 
Re-frame and A-Frame
Re-frame and A-FrameRe-frame and A-Frame
Re-frame and A-FrameKazuhiro Hara
 
MySQLのリアルタイムモニタリングツールを作った話
MySQLのリアルタイムモニタリングツールを作った話MySQLのリアルタイムモニタリングツールを作った話
MySQLのリアルタイムモニタリングツールを作った話Kentaro Kitagawa
 
Anemoneによるクローラー入門
Anemoneによるクローラー入門Anemoneによるクローラー入門
Anemoneによるクローラー入門Tasuku Nakano
 

Tendances (20)

MySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearchMySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearch
 
LocalStack
LocalStackLocalStack
LocalStack
 
Yesod勉強会
Yesod勉強会Yesod勉強会
Yesod勉強会
 
SolrとElasticsearchの比較
SolrとElasticsearchの比較SolrとElasticsearchの比較
SolrとElasticsearchの比較
 
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_code
 
まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?
 
閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とは閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とは
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
 
小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ
 
RESTful APIとしてのRailsとクライアントとしてのJavaScript
RESTful APIとしてのRailsとクライアントとしてのJavaScriptRESTful APIとしてのRailsとクライアントとしてのJavaScript
RESTful APIとしてのRailsとクライアントとしてのJavaScript
 
Elasticsearch at CrowdWorks
Elasticsearch at CrowdWorksElasticsearch at CrowdWorks
Elasticsearch at CrowdWorks
 
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51
 
Elasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバElasticsearchで作る形態素解析サーバ
Elasticsearchで作る形態素解析サーバ
 
CouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall TokyoCouchDB+OpenSocial - OSC 2009/Fall Tokyo
CouchDB+OpenSocial - OSC 2009/Fall Tokyo
 
はじめての datadog
はじめての datadogはじめての datadog
はじめての datadog
 
第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEE第52回なんてかんたんなJavaEE
第52回なんてかんたんなJavaEE
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2
 
Re-frame and A-Frame
Re-frame and A-FrameRe-frame and A-Frame
Re-frame and A-Frame
 
MySQLのリアルタイムモニタリングツールを作った話
MySQLのリアルタイムモニタリングツールを作った話MySQLのリアルタイムモニタリングツールを作った話
MySQLのリアルタイムモニタリングツールを作った話
 
Anemoneによるクローラー入門
Anemoneによるクローラー入門Anemoneによるクローラー入門
Anemoneによるクローラー入門
 

En vedette

Perkusiozko Musika Instrumentuak
Perkusiozko Musika InstrumentuakPerkusiozko Musika Instrumentuak
Perkusiozko Musika Instrumentuakguest8432f7
 
Folksonomie
FolksonomieFolksonomie
FolksonomieDaniele
 
ROLLER SHUTTER SYSTEMS
ROLLER SHUTTER SYSTEMS ROLLER SHUTTER SYSTEMS
ROLLER SHUTTER SYSTEMS DoorHan
 
Dancing With Wolves
Dancing With WolvesDancing With Wolves
Dancing With WolvesJavier
 
The Angels Song
The Angels SongThe Angels Song
The Angels SongJavier
 
Gprs基本原理
Gprs基本原理Gprs基本原理
Gprs基本原理fossnow
 
Kleiwegkwartier Presentation
Kleiwegkwartier PresentationKleiwegkwartier Presentation
Kleiwegkwartier PresentationInterlocuteurM
 
Kakapo slideshow by Dharia & Michenna
Kakapo slideshow by Dharia & MichennaKakapo slideshow by Dharia & Michenna
Kakapo slideshow by Dharia & MichennaTakahe One
 
Kakapo slideshow
Kakapo slideshowKakapo slideshow
Kakapo slideshowTakahe One
 
Camiñando a cegas
Camiñando a cegasCamiñando a cegas
Camiñando a cegasjr.lainho
 
The Exodus Song
The Exodus SongThe Exodus Song
The Exodus SongJavier
 
Like A Rolling Stone
Like A Rolling StoneLike A Rolling Stone
Like A Rolling StoneJavier
 
Txorro Morro Piko Tailo Ke
Txorro Morro Piko Tailo KeTxorro Morro Piko Tailo Ke
Txorro Morro Piko Tailo KeJavier
 
Kakapo slideshow by Izak and Ezra
Kakapo slideshow by Izak and EzraKakapo slideshow by Izak and Ezra
Kakapo slideshow by Izak and EzraTakahe One
 

En vedette (20)

Molino De Güeria
Molino De GüeriaMolino De Güeria
Molino De Güeria
 
Perkusiozko Musika Instrumentuak
Perkusiozko Musika InstrumentuakPerkusiozko Musika Instrumentuak
Perkusiozko Musika Instrumentuak
 
Canvi Climatic
Canvi ClimaticCanvi Climatic
Canvi Climatic
 
Presentation1
Presentation1Presentation1
Presentation1
 
MUJERES
MUJERESMUJERES
MUJERES
 
X3D - VRLM Task
X3D - VRLM TaskX3D - VRLM Task
X3D - VRLM Task
 
Folksonomie
FolksonomieFolksonomie
Folksonomie
 
ROLLER SHUTTER SYSTEMS
ROLLER SHUTTER SYSTEMS ROLLER SHUTTER SYSTEMS
ROLLER SHUTTER SYSTEMS
 
Dancing With Wolves
Dancing With WolvesDancing With Wolves
Dancing With Wolves
 
Ideas
IdeasIdeas
Ideas
 
The Angels Song
The Angels SongThe Angels Song
The Angels Song
 
Gprs基本原理
Gprs基本原理Gprs基本原理
Gprs基本原理
 
Kleiwegkwartier Presentation
Kleiwegkwartier PresentationKleiwegkwartier Presentation
Kleiwegkwartier Presentation
 
Kakapo slideshow by Dharia & Michenna
Kakapo slideshow by Dharia & MichennaKakapo slideshow by Dharia & Michenna
Kakapo slideshow by Dharia & Michenna
 
Kakapo slideshow
Kakapo slideshowKakapo slideshow
Kakapo slideshow
 
Camiñando a cegas
Camiñando a cegasCamiñando a cegas
Camiñando a cegas
 
The Exodus Song
The Exodus SongThe Exodus Song
The Exodus Song
 
Like A Rolling Stone
Like A Rolling StoneLike A Rolling Stone
Like A Rolling Stone
 
Txorro Morro Piko Tailo Ke
Txorro Morro Piko Tailo KeTxorro Morro Piko Tailo Ke
Txorro Morro Piko Tailo Ke
 
Kakapo slideshow by Izak and Ezra
Kakapo slideshow by Izak and EzraKakapo slideshow by Izak and Ezra
Kakapo slideshow by Izak and Ezra
 

Similaire à Couch Db勉強会0623 by yssk22

2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門miso- soup3
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionGoh Matsumoto
 
Rails3.1rc4を試してみた
Rails3.1rc4を試してみたRails3.1rc4を試してみた
Rails3.1rc4を試してみたTakahiro Hidaka
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係Hiraku Komuro
 
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)崇之 清水
 
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方Yuki Morishita
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうyoshikawa_t
 
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)Takuya Kawabe
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発Nomura Yusuke
 
2018 04-14-cockroachdb-20-now-available
2018 04-14-cockroachdb-20-now-available2018 04-14-cockroachdb-20-now-available
2018 04-14-cockroachdb-20-now-availableNaoto Gohko
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼうyouku
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバーemasaka
 
Couch DB in 15minutes
Couch DB in 15minutesCouch DB in 15minutes
Couch DB in 15minutesYohei Sasaki
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーションYoshifumi Kawai
 

Similaire à Couch Db勉強会0623 by yssk22 (20)

2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 
Mongodb
MongodbMongodb
Mongodb
 
Rails3.1rc4を試してみた
Rails3.1rc4を試してみたRails3.1rc4を試してみた
Rails3.1rc4を試してみた
 
G * magazine 0
G * magazine 0G * magazine 0
G * magazine 0
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
 
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
 
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろう
 
Bp study39 nodejs
Bp study39 nodejsBp study39 nodejs
Bp study39 nodejs
 
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
2018 04-14-cockroachdb-20-now-available
2018 04-14-cockroachdb-20-now-available2018 04-14-cockroachdb-20-now-available
2018 04-14-cockroachdb-20-now-available
 
Grails 2.0.0.M1の話
Grails 2.0.0.M1の話 Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバー
 
Couch DB in 15minutes
Couch DB in 15minutesCouch DB in 15minutes
Couch DB in 15minutes
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
 

Plus de Yohei Sasaki

20120317 CloudFoundry #pyfes
20120317 CloudFoundry #pyfes20120317 CloudFoundry #pyfes
20120317 CloudFoundry #pyfesYohei Sasaki
 
MongoDB on CloudFoundry
MongoDB on CloudFoundryMongoDB on CloudFoundry
MongoDB on CloudFoundryYohei Sasaki
 
MongoDB on CloudFoundry
MongoDB on CloudFoundryMongoDB on CloudFoundry
MongoDB on CloudFoundryYohei Sasaki
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouchYohei Sasaki
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門Yohei Sasaki
 
RelaxCafe@CouchDB break.4
RelaxCafe@CouchDB break.4RelaxCafe@CouchDB break.4
RelaxCafe@CouchDB break.4Yohei Sasaki
 
CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)
CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)
CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)Yohei Sasaki
 
前回のまとめ
前回のまとめ前回のまとめ
前回のまとめYohei Sasaki
 
Finding Your Data with Views
Finding Your Data with ViewsFinding Your Data with Views
Finding Your Data with ViewsYohei Sasaki
 
Couch Db.0.9.0.Pub
Couch Db.0.9.0.PubCouch Db.0.9.0.Pub
Couch Db.0.9.0.PubYohei Sasaki
 

Plus de Yohei Sasaki (15)

20120317 CloudFoundry #pyfes
20120317 CloudFoundry #pyfes20120317 CloudFoundry #pyfes
20120317 CloudFoundry #pyfes
 
CloudFoundry@home
CloudFoundry@homeCloudFoundry@home
CloudFoundry@home
 
MongoDB on CloudFoundry
MongoDB on CloudFoundryMongoDB on CloudFoundry
MongoDB on CloudFoundry
 
MongoDB on CloudFoundry
MongoDB on CloudFoundryMongoDB on CloudFoundry
MongoDB on CloudFoundry
 
membase
membasemembase
membase
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouch
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
 
CouchDB
CouchDBCouchDB
CouchDB
 
RelaxCafe@CouchDB break.4
RelaxCafe@CouchDB break.4RelaxCafe@CouchDB break.4
RelaxCafe@CouchDB break.4
 
Media On Couch
Media On CouchMedia On Couch
Media On Couch
 
CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)
CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)
CouchDB+OpenSocial - OSC 2009/Fall Tokyo (En)
 
前回のまとめ
前回のまとめ前回のまとめ
前回のまとめ
 
Finding Your Data with Views
Finding Your Data with ViewsFinding Your Data with Views
Finding Your Data with Views
 
Why CouchDB
Why CouchDBWhy CouchDB
Why CouchDB
 
Couch Db.0.9.0.Pub
Couch Db.0.9.0.PubCouch Db.0.9.0.Pub
Couch Db.0.9.0.Pub
 

Dernier

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 

Dernier (12)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

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
  • 4. WebJourney  iGoogle を Rails で作ってみたもの  jQuery + Rails + CouchDB 0.9.0 で実装  昔はMySQL(その話は後ほど)
  • 6. OpenSocial + CouchDB = Open Web Application  OpenSocial  自由にアプリケーションを持ち運べる  CouchDB  自由にデータを持ち運べる データとアプリケーションに 明確な境界など要らない?
  • 7. 2009/06/23 webjourney.org Yohei Sasaki / yssk22 CouchDB で始める ActiveRecord からの脱却
  • 8. これからの話 "CouchDBに興味があって、最近始めた"~ "CouchDBのアプリを作ってみようかなっ て思い始めた"人くらいを主なターゲット にしています。  Rails 使い がCouchDBのアプリを作ってみ ようかなー、と思い始めたときの話。  Relational DB から CouchDB へのreplace
  • 9. 長年の悩み:: GadgetをRDBに保存するのは難しい  Gadget のデータ、スキーマ はユーザーが追加するまで 決められない。  Gadget は必要に応じて追加 開発するから最初からス キーマを定義できない
  • 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にシリアライズ!
  • 13. GadgetInstance#parameters  Gadget 開発者がそれぞれのGadgetアプリ ケーションに応じて利用可能なフィールド  RSS のフィードURL  Blog Parts のようなJavaScript スクリプト  ... gi.parameters[:feed_url] = "http://...." とか gi.parameters[:script][:src] = "http://..." とか
  • 14. 抱える問題 = クエリ  GadgetデータをRDBに入れるのは簡単  ADO.NET の場合:: XML列にMapping (SQL Server)  Rails の場合:: YAMLで放り込む  Object → XML/YAML は比較的楽  しかし、クエリで取り出せない罠  XQuery 勉強する暇あったらORMなんか使いませんよ!  玉石混交のユーザーデータをフィルタできないなん て!!  例えば、Feed Gadgetなら設定されたURLのランキングを とりたい、とか。
  • 16. きっかけ  ロゴが気に入った。  勉強する時間が欲しかった。  特にErlang  HTTP  JSON  MapReduce  これなら、JavaScriptでクエリでき る!!
  • 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 さえ忘れなければ。
  • 22. Do you realy need app server?
  • 23. わき上がる疑問:: Rails要るの? JavaScriptで バリデーションとか Rails が Hashを Ruby でバリデーションとか CouchResourceに CouchResourceを Hash経由でJSONに
  • 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 がいい。  がんばって作ってみたけど、だめでした。
  • 28. CouchDBで Web Appを作る。  まさに CouchApp の世界  セキュリティは[あとで]。  とりあえず、リラックスすれば、世の中みんな いい人しかいないと思えてくる!!!