Submit Search
Upload
Mongo db勉強会
•
Download as ODP, PDF
•
3 likes
•
2,549 views
O
otmb
Follow
社内向けにMongoDB勉強会をしました。 社内フレームワークDecoでの実装について。
Read less
Read more
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 42
Download now
Recommended
PHP+DB
PHP+DB
Sawada Makoto
Phpcon kansai 2011 ichikaway
Phpcon kansai 2011 ichikaway
ichikaway
Pgunconf neo4j fdw
Pgunconf neo4j fdw
Toshi Harada
20150520 lt-neo4j勉強会-neofj fdw
20150520 lt-neo4j勉強会-neofj fdw
Toshi Harada
カウチなやつら CouchDB in the room
カウチなやつら CouchDB in the room
Makoto Ohnami
Dexiejs
Dexiejs
Ryota Suzuki
データベースのお話
データベースのお話
Hidekazu Tanaka
Indexed DBについて(書きかけ)
Indexed DBについて(書きかけ)
iPride Co., Ltd.
Recommended
PHP+DB
PHP+DB
Sawada Makoto
Phpcon kansai 2011 ichikaway
Phpcon kansai 2011 ichikaway
ichikaway
Pgunconf neo4j fdw
Pgunconf neo4j fdw
Toshi Harada
20150520 lt-neo4j勉強会-neofj fdw
20150520 lt-neo4j勉強会-neofj fdw
Toshi Harada
カウチなやつら CouchDB in the room
カウチなやつら CouchDB in the room
Makoto Ohnami
Dexiejs
Dexiejs
Ryota Suzuki
データベースのお話
データベースのお話
Hidekazu Tanaka
Indexed DBについて(書きかけ)
Indexed DBについて(書きかけ)
iPride Co., Ltd.
NoSQLデータベースと位置情報
NoSQLデータベースと位置情報
Koji Ichiwaki
初めてのMongo db
初めてのMongo db
Ryuji Tamagawa
ゼロから始めるBlob
ゼロから始めるBlob
Kazunori Hamamoto
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
HTML5 Local Storageを利用したメモ帳アプリ
HTML5 Local Storageを利用したメモ帳アプリ
Yossy Taka
Mongo dbを知ろう
Mongo dbを知ろう
CROOZ, inc.
Programming under capability mode
Programming under capability mode
Yuichiro Naito
MongoDBざっくり解説
MongoDBざっくり解説
知教 本間
Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
Hiroaki Kubota
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
Ryuji Tamagawa
ダイナミックDNSとは
ダイナミックDNSとは
Takeshi Kabu
ldapvi & python-ldap で stress-free life
ldapvi & python-ldap で stress-free life
Kouhei Maeda
Mongo db勉強会の補足
Mongo db勉強会の補足
CROOZ, inc.
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
Ajax非同期通信によるサーバー通信
Ajax非同期通信によるサーバー通信
Yossy Taka
R以外の研究ツール
R以外の研究ツール
弘毅 露崎
Mongo dbを半年ちょっと運用してみた
Mongo dbを半年ちょっと運用してみた
htty_hasumi
DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?
Hiroaki Kubota
Next-L Enju 開発ワークショップ #8
Next-L Enju 開発ワークショップ #8
Kosuke Tanabe
日本語:Mongo dbに於けるシャーディングについて
日本語:Mongo dbに於けるシャーディングについて
ippei_suzuki
【ポップインサイト】スタートアップのためのユーザテスト入門(ユーザ行動観察入門)
【ポップインサイト】スタートアップのためのユーザテスト入門(ユーザ行動観察入門)
いけとも
Webマーケティング戦略セミナー
Webマーケティング戦略セミナー
Yasuhiro Yoshizumi
More Related Content
What's hot
NoSQLデータベースと位置情報
NoSQLデータベースと位置情報
Koji Ichiwaki
初めてのMongo db
初めてのMongo db
Ryuji Tamagawa
ゼロから始めるBlob
ゼロから始めるBlob
Kazunori Hamamoto
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
HTML5 Local Storageを利用したメモ帳アプリ
HTML5 Local Storageを利用したメモ帳アプリ
Yossy Taka
Mongo dbを知ろう
Mongo dbを知ろう
CROOZ, inc.
Programming under capability mode
Programming under capability mode
Yuichiro Naito
MongoDBざっくり解説
MongoDBざっくり解説
知教 本間
Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
Hiroaki Kubota
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
Ryuji Tamagawa
ダイナミックDNSとは
ダイナミックDNSとは
Takeshi Kabu
ldapvi & python-ldap で stress-free life
ldapvi & python-ldap で stress-free life
Kouhei Maeda
Mongo db勉強会の補足
Mongo db勉強会の補足
CROOZ, inc.
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
Ajax非同期通信によるサーバー通信
Ajax非同期通信によるサーバー通信
Yossy Taka
R以外の研究ツール
R以外の研究ツール
弘毅 露崎
Mongo dbを半年ちょっと運用してみた
Mongo dbを半年ちょっと運用してみた
htty_hasumi
DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?
Hiroaki Kubota
Next-L Enju 開発ワークショップ #8
Next-L Enju 開発ワークショップ #8
Kosuke Tanabe
日本語:Mongo dbに於けるシャーディングについて
日本語:Mongo dbに於けるシャーディングについて
ippei_suzuki
What's hot
(20)
NoSQLデータベースと位置情報
NoSQLデータベースと位置情報
初めてのMongo db
初めてのMongo db
ゼロから始めるBlob
ゼロから始めるBlob
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
HTML5 Local Storageを利用したメモ帳アプリ
HTML5 Local Storageを利用したメモ帳アプリ
Mongo dbを知ろう
Mongo dbを知ろう
Programming under capability mode
Programming under capability mode
MongoDBざっくり解説
MongoDBざっくり解説
Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
ダイナミックDNSとは
ダイナミックDNSとは
ldapvi & python-ldap で stress-free life
ldapvi & python-ldap で stress-free life
Mongo db勉強会の補足
Mongo db勉強会の補足
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Ajax非同期通信によるサーバー通信
Ajax非同期通信によるサーバー通信
R以外の研究ツール
R以外の研究ツール
Mongo dbを半年ちょっと運用してみた
Mongo dbを半年ちょっと運用してみた
DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?
Next-L Enju 開発ワークショップ #8
Next-L Enju 開発ワークショップ #8
日本語:Mongo dbに於けるシャーディングについて
日本語:Mongo dbに於けるシャーディングについて
Viewers also liked
【ポップインサイト】スタートアップのためのユーザテスト入門(ユーザ行動観察入門)
【ポップインサイト】スタートアップのためのユーザテスト入門(ユーザ行動観察入門)
いけとも
Webマーケティング戦略セミナー
Webマーケティング戦略セミナー
Yasuhiro Yoshizumi
FARO REPORT Premium Sample
FARO REPORT Premium Sample
Miyu Mito
Schoo講義資料 the startup0815訂正版
Schoo講義資料 the startup0815訂正版
Yuhei Umeki
スタートアップ論(@沖縄での起業家イベント:投影用資料)
スタートアップ論(@沖縄での起業家イベント:投影用資料)
Goushi Yamaguchi
「新規事業の立ち上げにおけるチームビルディングの前提」Service Design Night vol.3 〜 新規事業立ち上げ時のチームビルディ...
「新規事業の立ち上げにおけるチームビルディングの前提」Service Design Night vol.3 〜 新規事業立ち上げ時のチームビルディ...
Tomohiro Suzuki
【Draft】サービス説明資料2017.03.01
【Draft】サービス説明資料2017.03.01
Kohta Wada
新規事業を立ち上げる時のチームビルディングについて(Yenta)
新規事業を立ち上げる時のチームビルディングについて(Yenta)
Toshiyuki Oka
スタートアップのPR会議に参加して鍛える企画力【Cu-hacker編】 先生:秋貞 雄大
スタートアップのPR会議に参加して鍛える企画力【Cu-hacker編】 先生:秋貞 雄大
schoowebcampus
WEBマーケティングを事例で習得 - schooのユーザーを5倍にしよう! 先生:山田 案稜
WEBマーケティングを事例で習得 - schooのユーザーを5倍にしよう! 先生:山田 案稜
schoowebcampus
Viewers also liked
(10)
【ポップインサイト】スタートアップのためのユーザテスト入門(ユーザ行動観察入門)
【ポップインサイト】スタートアップのためのユーザテスト入門(ユーザ行動観察入門)
Webマーケティング戦略セミナー
Webマーケティング戦略セミナー
FARO REPORT Premium Sample
FARO REPORT Premium Sample
Schoo講義資料 the startup0815訂正版
Schoo講義資料 the startup0815訂正版
スタートアップ論(@沖縄での起業家イベント:投影用資料)
スタートアップ論(@沖縄での起業家イベント:投影用資料)
「新規事業の立ち上げにおけるチームビルディングの前提」Service Design Night vol.3 〜 新規事業立ち上げ時のチームビルディ...
「新規事業の立ち上げにおけるチームビルディングの前提」Service Design Night vol.3 〜 新規事業立ち上げ時のチームビルディ...
【Draft】サービス説明資料2017.03.01
【Draft】サービス説明資料2017.03.01
新規事業を立ち上げる時のチームビルディングについて(Yenta)
新規事業を立ち上げる時のチームビルディングについて(Yenta)
スタートアップのPR会議に参加して鍛える企画力【Cu-hacker編】 先生:秋貞 雄大
スタートアップのPR会議に参加して鍛える企画力【Cu-hacker編】 先生:秋貞 雄大
WEBマーケティングを事例で習得 - schooのユーザーを5倍にしよう! 先生:山田 案稜
WEBマーケティングを事例で習得 - schooのユーザーを5倍にしよう! 先生:山田 案稜
Similar to Mongo db勉強会
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
じゅん なかざ
MongoDB
MongoDB
あしたのオープンソース研究所
Mongodb
Mongodb
Satoru Mikami
Mongo dbを知ろう devlove関西
Mongo dbを知ろう devlove関西
Ryuji Tamagawa
Couch DB in 15minutes
Couch DB in 15minutes
Yohei Sasaki
実はとても面白い...Documentation library
実はとても面白い...Documentation library
Kouta Shiobara
比べてみよう リレーショナル vs ドキュメント.pptx
比べてみよう リレーショナル vs ドキュメント.pptx
MariMurotani
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
infinite_loop
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~
じゅん なかざ
Tuning maniax 2014 Hadoop編
Tuning maniax 2014 Hadoop編
ThinkIT_impress
S2dao Seminar in tripodworks
S2dao Seminar in tripodworks
tripodworks
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)
Masayuki Kanou
Couchbase server入門
Couchbase server入門
Yusuke Komatsu
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
infinite_loop
mongoDB: OSC Tokyo2010 spring
mongoDB: OSC Tokyo2010 spring
ichikaway
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
Shinya Mori (@mosuke5)
OSC2012 Tokyo/Spring - Hadoop入門
OSC2012 Tokyo/Spring - Hadoop入門
Shinichi YAMASHITA
Cassandra(no sql)によるシステム提案と開発
Cassandra(no sql)によるシステム提案と開発
kishimotosc
Mongo db使ってみよう
Mongo db使ってみよう
Oda Shinsuke
Similar to Mongo db勉強会
(20)
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
MongoDB
MongoDB
Mongodb
Mongodb
Mongo dbを知ろう devlove関西
Mongo dbを知ろう devlove関西
Couch DB in 15minutes
Couch DB in 15minutes
実はとても面白い...Documentation library
実はとても面白い...Documentation library
比べてみよう リレーショナル vs ドキュメント.pptx
比べてみよう リレーショナル vs ドキュメント.pptx
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~
Tuning maniax 2014 Hadoop編
Tuning maniax 2014 Hadoop編
S2dao Seminar in tripodworks
S2dao Seminar in tripodworks
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)
Couchbase server入門
Couchbase server入門
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
mongoDB: OSC Tokyo2010 spring
mongoDB: OSC Tokyo2010 spring
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
OSC2012 Tokyo/Spring - Hadoop入門
OSC2012 Tokyo/Spring - Hadoop入門
Cassandra(no sql)によるシステム提案と開発
Cassandra(no sql)によるシステム提案と開発
Mongo db使ってみよう
Mongo db使ってみよう
Mongo db勉強会
1.
MongoDB 勉強会
2.
MongoDB とは?
3.
ドキュメント指向型 データーベース
4.
RDB が関係を格納するのに対し、 ドキュメント指向は、
ドキュメントを格納します。
5.
何故ドキュメント指向を使うのか?
6.
背景としては、 RDB では、
一般的にスケールアウトが難しい。 今も DB は一台で他を 分散化しようという流れがありますよね? 何にでも RDB を使うのではなく、 用途に応じて、分散化しやすい KVS やデータストアを利用していこう。 NoSQL を使おうという流れがある。
7.
NoSQL は 既に活用されています
8.
例えば、
9.
Google の
BigTable
10.
Amazon の
Dynamo
11.
これらはプロプライエタリな データーベース
12.
では、オープンな ドキュメント指向は 何があるか?
13.
Cassandra Apache License
2.0 Java
14.
CouchDB( カウチ DB)
Apache License 2.0 Erlang
15.
MongoDB GNU AGPL
v3.0 C++
16.
他にも色々 - Chordless
- Db4o - GT.M - HBase - Hypertable - Memcachedb - Mnesia - Project Voldemort - Redis - SimpleDB
17.
前置きはこのくらいにして、
18.
操作をしよう。
19.
ユーザーを作成
20.
// 接続
$ mongo > // 予約語として管理 DB があります。 > use admin // 現在はユーザーがいません。 > db.system.users.find() // ユーザーを作成します。 > db.addUser('root','password') { "_id" : ObjectId("4ce0d5d806d4bbe3c620c5a4"), "user" : "root", "readOnly" : false, "pwd" : "d60e7db4538202339acd585fa951c5aa" } // ユーザーを確認 > db.system.users.find() { "_id" : ObjectId("4ce0d5d806d4bbe3c620c5a4"), "user" : "root", "readOnly" : false, "pwd" : "d60e7db4538202339acd585fa951c5aa" }
21.
管理ユーザーが作成できれば、 //
パスワード設定を行います。 $ vi /etc/mongo.conf noauth = false auth = true $ /etc/init.d/mongo restart 次に認証の操作。
22.
// 接続
$ mongo > > use admin // DB の一覧を求めます。 Error を返します。 > show dbs // 認証します。 > db.auth('root','password') 1 // DB の一覧が見れるようになりました > show dbs // データーを登録します。 // use で DB を指定(作成 ) > use test // コレクションを指定してデーターを登録することで、コレクション ( テーブル ) が出来ます。 > db.hoge.insert({hoge: 1}) > db.hoge.find() // コレクションの一覧確認 > show collections
23.
高度な検索をする際は、以下を参考ください。 http://www.mongodb.org/pages/viewpage.action?pageId=6029357 イコールだと、
> db.hoge.find({hoge : 1 }) 例えば ne > db.hoge.find({ hoge: { $ne : 1 } })
24.
簡単な操作は以上 次は社内フレームワーク Deco
25.
Deco で Mongo
を 実装しました。
26.
なんで MongoDB なの?
27.
理由
28.
PHP から接続できるライブラリが 簡単に利用できるのと、記述が簡単
29.
// ライブラリの
インストール は一行 $ pecl install mongo // 設定は php.ini に 一行 extension=mongo.so
30.
では、 Deco での初期設定、
操作をみていきます。
31.
接続 env.yml
db: dsn: "mongodb://[username]:[password]@localhost/[database]" database: [database] 設定は以上
32.
コードの書き方 // DB
のインスタンス作成 $hoge = $c->mongo('hoge'); // 結果の配列を受け取る $out = $hoge->findBy($id); var_dump($out);
33.
以上で、操作出来ます。 次に PHP
のライブラリを見ていきます。
34.
MongoDB の コアクラス
Mongo Class MongoDB Class MongoCollection Class MongoCursor Class コアクラスは4つある。 次はクラスの説明。
35.
- Mongo Class
MongoDB と PHP を接続 - MongoDB Class Mongo Class のインスタンスを利用した データベースとのやりとり $m = new Mongo(); // 接続 $db = $m->selectDB("example"); - MongoCollection Class MongoDB のインスタンスを利用した コレクションを操作するクラス - MongoCursor Class データベースクエリの結果を表すオブジェクト
36.
Deco での実装では
MongoCollection Class を オーバーライドし、 インスタンスの結果を返します。
37.
何が嬉しいか? MongoCollection の
メソッドを自由に変更できる。
38.
また、 plugin/mongo/[collection].php
を用意することで、 コレクション毎に、 MongoCommon を オーバーライドする実装としました。
39.
Deco Mongo パッケージ構成
plugin/mongo.php plugin/mongo/MongoCommon.php plugin/mongo/[collection].php + Deco.php に function 追加 // mongoDB function & mongo($table){ $db = $this->plugin('mongo', 1); return $db->getMongo($table); }
40.
クラスのイメージ plugin/mongo/MongoCommon.php class
MongoCommon extends MongoCollection { } plugin/mongo/[collection].php // location.php class P_mongo_location extends MongoCommon { }
41.
つまり、メソッドの MongoCommon
の find メソッドに対し、 P_mongo_location に find を実装することで、 処理の上書きができます。 plugin/mongo/MongoCommon.php class MongoCommon extends MongoCollection { function find($query = array()){ return parent::find($query); } } plugin/mongo/[collection].php class P_mongo_location extends MongoCommon { function find($query = array()){ // ← が優先となる。 return 'hoge'; } }
42.
実装は以上です。 あとは、 Deco
での操作を見ながら 確認していきます。
Download now