SlideShare a Scribd company logo
MongoDB 勉強会
MongoDB とは?
ドキュメント指向型 データーベース
RDB が関係を格納するのに対し、 ドキュメント指向は、 ドキュメントを格納します。
何故ドキュメント指向を使うのか?
背景としては、 RDB では、 一般的にスケールアウトが難しい。 今も DB は一台で他を 分散化しようという流れがありますよね? 何にでも RDB を使うのではなく、 用途に応じて、分散化しやすい KVS やデータストアを利用していこう。 NoSQL を使おうという流れがある。
NoSQL は 既に活用されています
例えば、
Google  の  BigTable
Amazon  の  Dynamo
これらはプロプライエタリな データーベース
では、オープンな ドキュメント指向は 何があるか?
Cassandra Apache License 2.0 Java
CouchDB( カウチ DB) Apache License 2.0 Erlang
MongoDB GNU AGPL v3.0 C++
他にも色々 - Chordless - Db4o - GT.M - HBase - Hypertable - Memcachedb - Mnesia - Project Voldemort - Redis - SimpleDB
前置きはこのくらいにして、
操作をしよう。
ユーザーを作成
//  接続 $ 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" }
管理ユーザーが作成できれば、 //  パスワード設定を行います。 $ vi /etc/mongo.conf noauth = false auth = true $ /etc/init.d/mongo restart 次に認証の操作。
//  接続 $ 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
高度な検索をする際は、以下を参考ください。 http://www.mongodb.org/pages/viewpage.action?pageId=6029357 イコールだと、 > db.hoge.find({hoge : 1 })  例えば  ne  > db.hoge.find({ hoge: { $ne : 1 } })
簡単な操作は以上 次は社内フレームワーク Deco
Deco で Mongo を 実装しました。
なんで MongoDB なの?
理由
PHP から接続できるライブラリが 簡単に利用できるのと、記述が簡単
//  ライブラリの インストール は一行 $ pecl install mongo //  設定は  php.ini  に 一行  extension=mongo.so
では、 Deco での初期設定、 操作をみていきます。
接続  env.yml db: dsn: "mongodb://[username]:[password]@localhost/[database]" database: [database] 設定は以上
コードの書き方 // DB のインスタンス作成 $hoge = $c->mongo('hoge'); //  結果の配列を受け取る $out = $hoge->findBy($id); var_dump($out);
以上で、操作出来ます。 次に PHP のライブラリを見ていきます。
MongoDB の コアクラス Mongo Class MongoDB Class MongoCollection Class MongoCursor Class コアクラスは4つある。 次はクラスの説明。
- Mongo Class MongoDB  と  PHP  を接続 - MongoDB Class  Mongo Class のインスタンスを利用した データベースとのやりとり $m = new Mongo(); //  接続 $db = $m->selectDB("example"); - MongoCollection Class MongoDB のインスタンスを利用した コレクションを操作するクラス - MongoCursor Class データベースクエリの結果を表すオブジェクト
Deco での実装では  MongoCollection Class  を オーバーライドし、 インスタンスの結果を返します。
何が嬉しいか? MongoCollection の メソッドを自由に変更できる。
また、 plugin/mongo/[collection].php  を用意することで、 コレクション毎に、 MongoCommon  を オーバーライドする実装としました。
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); }
クラスのイメージ plugin/mongo/MongoCommon.php class MongoCommon extends MongoCollection { } plugin/mongo/[collection].php // location.php class P_mongo_location extends MongoCommon { }
つまり、メソッドの  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'; } }
実装は以上です。 あとは、 Deco での操作を見ながら 確認していきます。

More Related Content

PPTX
PDF
Phpcon kansai 2011 ichikaway
PDF
Pgunconf neo4j fdw
PDF
20150520 lt-neo4j勉強会-neofj fdw
PDF
カウチなやつら CouchDB in the room
PDF
Dexiejs
KEY
データベースのお話
PPTX
Indexed DBについて(書きかけ)
Phpcon kansai 2011 ichikaway
Pgunconf neo4j fdw
20150520 lt-neo4j勉強会-neofj fdw
カウチなやつら CouchDB in the room
Dexiejs
データベースのお話
Indexed DBについて(書きかけ)

What's hot (20)

PDF
NoSQLデータベースと位置情報
PDF
初めてのMongo db
PPTX
ゼロから始めるBlob
PDF
RとSQLiteで気軽にデータベース作成
PDF
HTML5 Local Storageを利用したメモ帳アプリ
PPTX
Mongo dbを知ろう
ODP
Programming under capability mode
PDF
MongoDBざっくり解説
PDF
Db tech showcase2015 how to replicate between clusters
PDF
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
PDF
ダイナミックDNSとは
PDF
ldapvi & python-ldap で stress-free life
PPTX
Mongo db勉強会の補足
PPTX
MongoDBが遅いときの切り分け方法
PDF
Ajax非同期通信によるサーバー通信
PDF
R以外の研究ツール
ODP
Mongo dbを半年ちょっと運用してみた
PDF
DB tech showcase: 噂のMongoDBその用途は?
ODP
Next-L Enju 開発ワークショップ #8
PPTX
日本語:Mongo dbに於けるシャーディングについて
NoSQLデータベースと位置情報
初めてのMongo db
ゼロから始めるBlob
RとSQLiteで気軽にデータベース作成
HTML5 Local Storageを利用したメモ帳アプリ
Mongo dbを知ろう
Programming under capability mode
MongoDBざっくり解説
Db tech showcase2015 how to replicate between clusters
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
ダイナミックDNSとは
ldapvi & python-ldap で stress-free life
Mongo db勉強会の補足
MongoDBが遅いときの切り分け方法
Ajax非同期通信によるサーバー通信
R以外の研究ツール
Mongo dbを半年ちょっと運用してみた
DB tech showcase: 噂のMongoDBその用途は?
Next-L Enju 開発ワークショップ #8
日本語:Mongo dbに於けるシャーディングについて
Ad

Viewers also liked (10)

PDF
【ポップインサイト】スタートアップのためのユーザテスト入門(ユーザ行動観察入門)
PDF
Webマーケティング戦略セミナー
PPTX
FARO REPORT Premium Sample
PPTX
Schoo講義資料 the startup0815訂正版
PPTX
スタートアップ論(@沖縄での起業家イベント:投影用資料)
PDF
「新規事業の立ち上げにおけるチームビルディングの前提」Service Design Night vol.3 〜 新規事業立ち上げ時のチームビルディ...
PDF
【Draft】サービス説明資料2017.03.01
PDF
新規事業を立ち上げる時のチームビルディングについて(Yenta)
PPT
スタートアップのPR会議に参加して鍛える企画力【Cu-hacker編】 先生:秋貞 雄大
PDF
WEBマーケティングを事例で習得 - schooのユーザーを5倍にしよう! 先生:山田 案稜
【ポップインサイト】スタートアップのためのユーザテスト入門(ユーザ行動観察入門)
Webマーケティング戦略セミナー
FARO REPORT Premium Sample
Schoo講義資料 the startup0815訂正版
スタートアップ論(@沖縄での起業家イベント:投影用資料)
「新規事業の立ち上げにおけるチームビルディングの前提」Service Design Night vol.3 〜 新規事業立ち上げ時のチームビルディ...
【Draft】サービス説明資料2017.03.01
新規事業を立ち上げる時のチームビルディングについて(Yenta)
スタートアップのPR会議に参加して鍛える企画力【Cu-hacker編】 先生:秋貞 雄大
WEBマーケティングを事例で習得 - schooのユーザーを5倍にしよう! 先生:山田 案稜
Ad

Similar to Mongo db勉強会 (20)

PDF
Introduction to MongoDB
PPTX
PHPとMongoDBで学ぶ次世代データストア
PDF
Mongodb 紹介
PPT
Mongodb
PDF
MongoDBの使い方
PDF
はじめてのMongoDB
PDF
MongoDB very basic (Japanese) / MongoDB基礎の基礎
PDF
2019年度 若手技術者向け講座 NoSQL
PDF
MongoDB勉強会資料
PDF
mongodbの簡易ストレージ化
DOC
20110301 Mongo Tokyo
DOC
20110302 Mongo Tokyo
PDF
後悔しないもんごもんごの使い方 〜アプリ編〜
PPTX
初心者向けMongoDBのキホン!
PDF
Javaでmongo db
PDF
MongoDB〜その性質と利用場面〜
PDF
20120831 mongoid
PDF
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
PDF
StepInNosql
Introduction to MongoDB
PHPとMongoDBで学ぶ次世代データストア
Mongodb 紹介
Mongodb
MongoDBの使い方
はじめてのMongoDB
MongoDB very basic (Japanese) / MongoDB基礎の基礎
2019年度 若手技術者向け講座 NoSQL
MongoDB勉強会資料
mongodbの簡易ストレージ化
20110301 Mongo Tokyo
20110302 Mongo Tokyo
後悔しないもんごもんごの使い方 〜アプリ編〜
初心者向けMongoDBのキホン!
Javaでmongo db
MongoDB〜その性質と利用場面〜
20120831 mongoid
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
StepInNosql

Mongo db勉強会