Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MongoDBざっくり解説

6,229 views

Published on

2011-12-07 MongoDB女子部startup発表資料

Published in: Technology, Business
  • Be the first to comment

MongoDBざっくり解説

  1. 1. MongoDBざっくり解説 ∼「はじめてのMongoDB」を初めて読む方々へ∼11年12月8日木曜日
  2. 2. 自己紹介 Name:本間 知教(ほんま とものり) Twitter:@CkReal 経歴 2008年4月∼2011年9月 国内某ITコンサルティング会社:インフラ担当 2011年9月∼ 株式会社gumi:インフラand解析チーム 今週から正社員になりました^^; 好きなMongoDBの機能:Replica Sets 211年12月8日木曜日
  3. 3. はじめに はじめての @doryokujin 日本UNIXユーザ会 勉強会 2011/09/15 http://www.slideshare.net/doryokujin/ @doryokujinさん mongodb-9208855 311年12月8日木曜日
  4. 4. はじめに @doryokujinさんはMongoSV出席のため渡米中 411年12月8日木曜日
  5. 5. 発表の目的 MongoDB人口の増加 MongoDBの(最低限の)機能紹介 MongoDBの公式ドキュメントや@doryokujin さん の各種資料への誘導 mongotokyoの登壇者募集 来年は女性MongoDBエンジニアにも登壇を! 511年12月8日木曜日
  6. 6. アジェンダ 1.MongoDBの概要 2.MongoDBの機能 3.MongoDBを始めてみる方へ 611年12月8日木曜日
  7. 7. 1.MongoDBの概要 711年12月8日木曜日
  8. 8. MongoDBの概要 ドキュメント指向データベース JSONでドキュメントを扱う(内部はBSON) 実装:C++ 開発元:10gen http://www.10gen.com/ 最新版:2.0.1 ライセンス Database: GNU AGPL v3.0 License Driver: Apache License v2.0 OS:Linux,Mac,Windows,Solaris Driver: C , C++, Python, Java, Ruby, PHP, Perl,etc… 811年12月8日木曜日
  9. 9. MongoDBの導入事例 世界中で利用されつつあるデータベース 解析用途だけではなく、Webサービスでも使われる 海外の事例 国内の事例 911年12月8日木曜日
  10. 10. Mongo Tokyo 2012 1月18日品川でカンファレンスが開催されます 12月18日まではEarly Bird料金で参加可能!! http://www.10gen.com/events/mongo-tokyo-2012 今年のMongoDB勉強会の様子 1011年12月8日木曜日
  11. 11. 2.MongoDBの機能 1111年12月8日木曜日
  12. 12. データの保存&検索 通常のRDBとは、用語が異なる RDB データベース テーブル レコード カラム MongoDB データベース コレクション ドキュメント フィールド MongoDB Server Database Database Collection Collection Collection Collection Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document 1211年12月8日木曜日
  13. 13. データの保存&検索 スキーマレス カラム追加・削除の手間がない # mongo > use hoge > db.piyo.save({fuga:1}) > show dbs hoge 0.203125GB > db.piyo.find() { "_id" : ObjectId("4ec5fd452d9d5991cd323c20"), "fuga" : 1 } 1311年12月8日木曜日
  14. 14. データの保存&検索 トランザクションやJOINがない パフォーマンスとスケーラビリティを優先 挿入・検索速度:MySQL<MongoDB<KVS ディスクへの書き込みは非同期 ジャーナリング機能(v1.8~)の使用を推奨 インデックスサポート あらゆる属性でインデックスを貼れる 1411年12月8日木曜日
  15. 15. ドキュメント例(gumiの場合) MongoDBへ格納するドキュメントは、ユーザ/時のアクション状況で格納 例)MongoDB格納後のログ(一部整形&省略) "_id" : "df41b04eb72d29b4a30955f2de1a20134e187cd6f59f0d3df0468d22", "app" : "hogehoge", "userid" : "12345", "dateint" : 20111101, "hourint" : 23, ユーザIDごとに、 "actions" : [ アクションレコードを格納 "CONSUME_POWER", "ADD_MONEY" ], 時刻フィールドを利用して、 "records" : [ MongoDBのShardingキーとする { "action" : "ADD_MONEY", "timeint" : 235959, ユーザごとの各アクションを } 配列として格納 ] 1511年12月8日木曜日
  16. 16. MongoDBを運用する Replica Sets 更新はPrimary,参照はSecondary 自動フェイルオーバー機能を持つ 自動フェイルオーバーの流れ 同期 Primary 同期 Secondary Secondary 1611年12月8日木曜日
  17. 17. MongoDBを運用する Replica Sets 更新はPrimary,参照はSecondary 自動フェイルオーバー機能を持つ 自動フェイルオーバーの流れ Primary 選出 Secondary Secondary 1711年12月8日木曜日
  18. 18. MongoDBを運用する Replica Sets 更新はPrimary,参照はSecondary 自動フェイルオーバー機能を持つ 自動フェイルオーバーの流れ Recovering 同期 Primary Secondary 1811年12月8日木曜日
  19. 19. MongoDBを運用する Replica Sets 更新はPrimary,参照はSecondary 自動フェイルオーバー機能を持つ 自動フェイルオーバーの流れ Secondary 同期 同期 Primary Secondary 1911年12月8日木曜日
  20. 20. MongoDBを運用する Mongo Sharding Auto-balancing機能を持つ Sharding Keyに基づき、コレクションを分割 Shardingは、3種類のサーバで構成される mongos,config,mongod Migrationは、Chunk単位で行われる document単位ではないことに注意 2011年12月8日木曜日
  21. 21. MongoDBを運用する Mongo Sharding mongos経由で、mongodのドキュメントを操作する 各Shardに関する (永続的な)情報を保持 実際のドキュメントは、 mongodに格納される クライアントのアクセス は、mongosに対して行う 2111年12月8日木曜日
  22. 22. MongoDBを運用する Mongo Shardingの注意点 Shard KeyはCollection内のどれか1つから選択 各Shardは、重複しないレンジで分割される 例)Shard1:0~10, Shard1:11~20, Shard2:21~30… 分散させやすいKeyを選ぶことが重要 良い例:ユーザ名,時刻,検索頻度が多いキーなど 悪い例:大陸名,単純増加のIDなど 2211年12月8日木曜日
  23. 23. MongoDBを運用する Auto-balancingの注意点 Migration中は、2重にカウントされる Auto-balancingはOFFにしておける。 Shard1 Shard2 Shard1 Shard2 DatabaseA DatabaseA DatabaseA DatabaseA CollectionA CollectionA CollectionA CollectionA Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Document Shardの偏り Migration(Chunk単位で実施) 2311年12月8日木曜日
  24. 24. その他 その他にも機能やTipsがたくさん Capped Collection,Map Reduce,GridFS… クエリチューニング 参考文献 NoSQLデータベースファーストガイド MongoDB JPの各種資料 @doryokujinさんのブログ 2411年12月8日木曜日
  25. 25. 3. MongoDBを始めてみる方へ 2511年12月8日木曜日
  26. 26. MongoDBの構築メモ MongoDBを動かすのはすごく簡単 Macでもmac ports,homebrewなどですぐに入る 様々なログ形式を突っ込めるストレージDB 挿入・検索速度>一貫性 データ設計が柔軟に行えるDB MongoDBのクエリは豊富 コマンドを忘れたら、help()で確認 2611年12月8日木曜日
  27. 27. MongoDBの運用メモ 実運用には十分耐えられる 約1000万件での検索時間は平均0.066sec 監視用ツール類も充実 munin,Ganglia,cacti,ZABBIX,Nagios MongoDBを検討する際は、検証期間を取る Sharding環境には慣れが必要 configデータベース内の統計値なども見ておく 2711年12月8日木曜日
  28. 28. MongoDB勉強会 & ソースコードリーディング勉強会 での出席(and登壇)お待ちしております!! 2811年12月8日木曜日
  29. 29. ご清聴ありがとうございました。 2911年12月8日木曜日

×