MongoDBざっくり解説

知教 本間
知教 本間システムオペレーションエンジニア at 株式会社gumi
MongoDBざっくり解説
          ∼「はじめてのMongoDB」を初めて読む方々へ∼




11年12月8日木曜日
自己紹介

          Name:本間 知教(ほんま とものり)
          Twitter:@CkReal
          経歴
              2008年4月∼2011年9月

               国内某ITコンサルティング会社:インフラ担当

              2011年9月∼

               株式会社gumi:インフラand解析チーム

               今週から正社員になりました^^;

          好きなMongoDBの機能:Replica Sets

                                  2
11年12月8日木曜日
はじめに




                                           はじめての


                                                 @doryokujin
                                           日本UNIXユーザ会 勉強会 2011/09/15


                                  http://www.slideshare.net/doryokujin/
              @doryokujinさん                mongodb-9208855


                              3
11年12月8日木曜日
はじめに

          @doryokujinさんはMongoSV出席のため渡米中




                       4
11年12月8日木曜日
発表の目的

          MongoDB人口の増加
              MongoDBの(最低限の)機能紹介

              MongoDBの公式ドキュメントや@doryokujin さん
              の各種資料への誘導

          mongotokyoの登壇者募集
              来年は女性MongoDBエンジニアにも登壇を!




                           5
11年12月8日木曜日
アジェンダ

       1.MongoDBの概要
       2.MongoDBの機能
       3.MongoDBを始めてみる方へ




                      6
11年12月8日木曜日
1.MongoDBの概要




                   7
11年12月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…

                                              8
11年12月8日木曜日
MongoDBの導入事例

          世界中で利用されつつあるデータベース
              解析用途だけではなく、Webサービスでも使われる

              海外の事例




              国内の事例



                        9
11年12月8日木曜日
Mongo Tokyo 2012

          1月18日品川でカンファレンスが開催されます
              12月18日まではEarly Bird料金で参加可能!!




    http://www.10gen.com/events/mongo-tokyo-2012        今年のMongoDB勉強会の様子
                                                   10
11年12月8日木曜日
2.MongoDBの機能




                   11
11年12月8日木曜日
データの保存&検索

          通常の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



                                                       12
11年12月8日木曜日
データの保存&検索

          スキーマレス
              カラム追加・削除の手間がない

   # mongo
   > use hoge
   > db.piyo.save({fuga:1})
   > show dbs
   hoge 0.203125GB
   > db.piyo.find()
   { "_id" : ObjectId("4ec5fd452d9d5991cd323c20"), "fuga" : 1 }
                                13
11年12月8日木曜日
データの保存&検索

          トランザクションやJOINがない
              パフォーマンスとスケーラビリティを優先

               挿入・検索速度:MySQL<MongoDB<KVS

          ディスクへの書き込みは非同期
              ジャーナリング機能(v1.8~)の使用を推奨

          インデックスサポート
              あらゆる属性でインデックスを貼れる

                             14
11年12月8日木曜日
ドキュメント例(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,                     ユーザごとの各アクションを
          }                                                 配列として格納
       ]
                                        15
11年12月8日木曜日
MongoDBを運用する

          Replica Sets
              更新はPrimary,参照はSecondary

              自動フェイルオーバー機能を持つ

                          自動フェイルオーバーの流れ


                         同期     Primary     同期



                    Secondary             Secondary


                                  16
11年12月8日木曜日
MongoDBを運用する

          Replica Sets
              更新はPrimary,参照はSecondary

              自動フェイルオーバー機能を持つ

                         自動フェイルオーバーの流れ


                                Primary


                                 選出
                    Secondary             Secondary


                                  17
11年12月8日木曜日
MongoDBを運用する

          Replica Sets
              更新はPrimary,参照はSecondary

              自動フェイルオーバー機能を持つ

                         自動フェイルオーバーの流れ


                               Recovering


                                 同期
                     Primary                Secondary


                                   18
11年12月8日木曜日
MongoDBを運用する

          Replica Sets
              更新はPrimary,参照はSecondary

              自動フェイルオーバー機能を持つ

                          自動フェイルオーバーの流れ


                               Secondary
                         同期

                                 同期
                     Primary               Secondary


                                  19
11年12月8日木曜日
MongoDBを運用する

          Mongo Sharding
              Auto-balancing機能を持つ

              Sharding Keyに基づき、コレクションを分割

              Shardingは、3種類のサーバで構成される

               mongos,config,mongod

              Migrationは、Chunk単位で行われる

               document単位ではないことに注意

                                     20
11年12月8日木曜日
MongoDBを運用する

          Mongo Sharding
              mongos経由で、mongodのドキュメントを操作する

    各Shardに関する
  (永続的な)情報を保持


                                実際のドキュメントは、
                                 mongodに格納される

                                クライアントのアクセス
                                は、mongosに対して行う

                           21
11年12月8日木曜日
MongoDBを運用する

          Mongo Shardingの注意点
              Shard KeyはCollection内のどれか1つから選択

              各Shardは、重複しないレンジで分割される

               例)Shard1:0~10, Shard1:11~20, Shard2:21~30…

              分散させやすいKeyを選ぶことが重要

               良い例:ユーザ名,時刻,検索頻度が多いキーなど

               悪い例:大陸名,単純増加のIDなど


                                     22
11年12月8日木曜日
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単位で実施)
                                                  23
11年12月8日木曜日
その他

          その他にも機能やTipsがたくさん
              Capped Collection,Map Reduce,GridFS…

              クエリチューニング

          参考文献
              NoSQLデータベースファーストガイド

              MongoDB JPの各種資料

              @doryokujinさんのブログ

                                 24
11年12月8日木曜日
3. MongoDBを始めてみる方へ




               25
11年12月8日木曜日
MongoDBの構築メモ

          MongoDBを動かすのはすごく簡単
              Macでもmac ports,homebrewなどですぐに入る

          様々なログ形式を突っ込めるストレージDB
              挿入・検索速度>一貫性

              データ設計が柔軟に行えるDB

          MongoDBのクエリは豊富
              コマンドを忘れたら、help()で確認

                              26
11年12月8日木曜日
MongoDBの運用メモ

              実運用には十分耐えられる
               約1000万件での検索時間は平均0.066sec

              監視用ツール類も充実
               munin,Ganglia,cacti,ZABBIX,Nagios

              MongoDBを検討する際は、検証期間を取る
               Sharding環境には慣れが必要

               configデータベース内の統計値なども見ておく

                                  27
11年12月8日木曜日
MongoDB勉強会
                     &
              ソースコードリーディング勉強会
 での出席(and登壇)お待ちしております!!



                     28
11年12月8日木曜日
ご清聴ありがとうございました。




                    29
11年12月8日木曜日
1 of 29

Recommended

MongoDB〜その性質と利用場面〜 by
MongoDB〜その性質と利用場面〜MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜Naruhiko Ogasawara
65.2K views61 slides
DB tech showcase: 噂のMongoDBその用途は? by
DB tech showcase: 噂のMongoDBその用途は?DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?Hiroaki Kubota
16.9K views74 slides
MongoDB very basic (Japanese) / MongoDB基礎の基礎 by
MongoDB very basic (Japanese) / MongoDB基礎の基礎MongoDB very basic (Japanese) / MongoDB基礎の基礎
MongoDB very basic (Japanese) / MongoDB基礎の基礎Naruhiko Ogasawara
4.3K views52 slides
後悔しないもんごもんごの使い方 〜アプリ編〜 by
後悔しないもんごもんごの使い方 〜アプリ編〜後悔しないもんごもんごの使い方 〜アプリ編〜
後悔しないもんごもんごの使い方 〜アプリ編〜Masakazu Matsushita
10.5K views58 slides
Mongo dbを知ろう by
Mongo dbを知ろうMongo dbを知ろう
Mongo dbを知ろうCROOZ, inc.
29.9K views52 slides

More Related Content

What's hot

Introduction to MongoDB by
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBmoai kids
15.5K views60 slides
初心者向けMongoDBのキホン! by
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
52.5K views21 slides
初めてのMongo db by
初めてのMongo db初めてのMongo db
初めてのMongo dbRyuji Tamagawa
2.7K views32 slides
Mongo db勉強会の補足 by
Mongo db勉強会の補足Mongo db勉強会の補足
Mongo db勉強会の補足CROOZ, inc.
5.4K views17 slides
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013) by
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)Ryuji Tamagawa
10.1K views29 slides
はじめてのMongoDB by
はじめてのMongoDBはじめてのMongoDB
はじめてのMongoDBKeisuke Izumiya
2.8K views40 slides

What's hot(20)

Introduction to MongoDB by moai kids
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
moai kids15.5K views
Mongo db勉強会の補足 by CROOZ, inc.
Mongo db勉強会の補足Mongo db勉強会の補足
Mongo db勉強会の補足
CROOZ, inc.5.4K views
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013) by Ryuji Tamagawa
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
Ryuji Tamagawa10.1K views
Db tech showcase2015 how to replicate between clusters by Hiroaki Kubota
Db tech showcase2015 how to replicate between clustersDb tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
Hiroaki Kubota2K views
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜 by Takahiro Inoue
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue43.2K views
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ! by Naruhiko Ogasawara
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Naruhiko Ogasawara8.7K views
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land by Masakazu Matsushita
ソーシャルゲームにおけるMongoDB適用事例 - Animal LandソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
Masakazu Matsushita11.2K views
日本語:Mongo dbに於けるシャーディングについて by ippei_suzuki
日本語:Mongo dbに於けるシャーディングについて日本語:Mongo dbに於けるシャーディングについて
日本語:Mongo dbに於けるシャーディングについて
ippei_suzuki5.2K views
Mongo dbを半年ちょっと運用してみた by htty_hasumi
Mongo dbを半年ちょっと運用してみたMongo dbを半年ちょっと運用してみた
Mongo dbを半年ちょっと運用してみた
htty_hasumi1.8K views
NoSQLデータベースと位置情報 by Koji Ichiwaki
NoSQLデータベースと位置情報NoSQLデータベースと位置情報
NoSQLデータベースと位置情報
Koji Ichiwaki17.6K views
ザ・ドキュメント~うまくいかないNoSQL~ by Akihiro Kuwano
ザ・ドキュメント~うまくいかないNoSQL~ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~
Akihiro Kuwano27.4K views
MongoDBのはじめての運用テキスト by Akihiro Kuwano
MongoDBのはじめての運用テキストMongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキスト
Akihiro Kuwano8.3K views
MongoDB on EC2 #mongodbcasual by Yasuhiro Matsuo
MongoDB on EC2 #mongodbcasualMongoDB on EC2 #mongodbcasual
MongoDB on EC2 #mongodbcasual
Yasuhiro Matsuo7.6K views
MongoDB Configパラメータ解説 by Shoken Fujisaki
MongoDB Configパラメータ解説MongoDB Configパラメータ解説
MongoDB Configパラメータ解説
Shoken Fujisaki32.2K views

Viewers also liked

MongoDB全機能解説1 by
MongoDB全機能解説1MongoDB全機能解説1
MongoDB全機能解説1Takahiro Inoue
54.6K views74 slides
MongoDB全機能解説2 by
MongoDB全機能解説2MongoDB全機能解説2
MongoDB全機能解説2Takahiro Inoue
2.8K views85 slides
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能 by
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能youten (ようてん)
8.9K views16 slides
MongoDB Oplog入門 by
MongoDB Oplog入門MongoDB Oplog入門
MongoDB Oplog入門Takahiro Inoue
7.2K views24 slides
MongoDBを使用したモバイルゲーム開発 by
MongoDBを使用したモバイルゲーム開発MongoDBを使用したモバイルゲーム開発
MongoDBを使用したモバイルゲーム開発Genki Yamada
18.6K views18 slides
はじめてのMongoDB by
はじめてのMongoDBはじめてのMongoDB
はじめてのMongoDBTakahiro Inoue
16.1K views72 slides

Viewers also liked(14)

MongoDB全機能解説1 by Takahiro Inoue
MongoDB全機能解説1MongoDB全機能解説1
MongoDB全機能解説1
Takahiro Inoue54.6K views
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能 by youten (ようてん)
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
MongoDBを使用したモバイルゲーム開発 by Genki Yamada
MongoDBを使用したモバイルゲーム開発MongoDBを使用したモバイルゲーム開発
MongoDBを使用したモバイルゲーム開発
Genki Yamada18.6K views
はじめてのMongoDB by Takahiro Inoue
はじめてのMongoDBはじめてのMongoDB
はじめてのMongoDB
Takahiro Inoue16.1K views
20110514 mongo dbチューニング by Yuichi Matsuo
20110514 mongo dbチューニング20110514 mongo dbチューニング
20110514 mongo dbチューニング
Yuichi Matsuo27K views
世界500万人を巻き込み“ゲーム内の国家”を作った神撃のバハムート by tora_ana
世界500万人を巻き込み“ゲーム内の国家”を作った神撃のバハムート世界500万人を巻き込み“ゲーム内の国家”を作った神撃のバハムート
世界500万人を巻き込み“ゲーム内の国家”を作った神撃のバハムート
tora_ana12.8K views
実践Android Developer Testing by ussy
実践Android Developer Testing実践Android Developer Testing
実践Android Developer Testing
ussy3.9K views
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17) by Takeshi HASEGAWA
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
Takeshi HASEGAWA18.8K views
月間10,000PVのブログになるまでに学んだSEO 2014年12月7日 by Nanae Hibino
月間10,000PVのブログになるまでに学んだSEO 2014年12月7日月間10,000PVのブログになるまでに学んだSEO 2014年12月7日
月間10,000PVのブログになるまでに学んだSEO 2014年12月7日
Nanae Hibino27.1K views
磯野ー!関数型言語やろうぜー! by Ra Zon
磯野ー!関数型言語やろうぜー!磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
Ra Zon10.3K views
インフラエンジニアのためのcassandra入門 by Akihiro Kuwano
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
Akihiro Kuwano71.1K views

Similar to MongoDBざっくり解説

mongoDB: OSC Tokyo2010 spring by
mongoDB: OSC Tokyo2010 springmongoDB: OSC Tokyo2010 spring
mongoDB: OSC Tokyo2010 springichikaway
1.2K views8 slides
20120831 mongoid by
20120831 mongoid20120831 mongoid
20120831 mongoidTakeshi AKIMA
1.9K views52 slides
ソーシャルゲームのEMR活用事例 by
ソーシャルゲームのEMR活用事例ソーシャルゲームのEMR活用事例
ソーシャルゲームのEMR活用事例知教 本間
4.6K views18 slides
Casual Compression on MongoDB by
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDBmoai kids
11K views46 slides
ソーシャルゲームログ解析基盤のMongoDB活用事例 by
ソーシャルゲームログ解析基盤のMongoDB活用事例ソーシャルゲームログ解析基盤のMongoDB活用事例
ソーシャルゲームログ解析基盤のMongoDB活用事例知教 本間
4.8K views19 slides
20110301 Mongo Tokyo by
20110301 Mongo Tokyo20110301 Mongo Tokyo
20110301 Mongo TokyoKenichi Masuda
492 views7 slides

Similar to MongoDBざっくり解説(20)

mongoDB: OSC Tokyo2010 spring by ichikaway
mongoDB: OSC Tokyo2010 springmongoDB: OSC Tokyo2010 spring
mongoDB: OSC Tokyo2010 spring
ichikaway1.2K views
ソーシャルゲームのEMR活用事例 by 知教 本間
ソーシャルゲームのEMR活用事例ソーシャルゲームのEMR活用事例
ソーシャルゲームのEMR活用事例
知教 本間4.6K views
Casual Compression on MongoDB by moai kids
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDB
moai kids11K views
ソーシャルゲームログ解析基盤のMongoDB活用事例 by 知教 本間
ソーシャルゲームログ解析基盤のMongoDB活用事例ソーシャルゲームログ解析基盤のMongoDB活用事例
ソーシャルゲームログ解析基盤のMongoDB活用事例
知教 本間4.8K views
Mongo db勉強会 by otmb
Mongo db勉強会Mongo db勉強会
Mongo db勉強会
otmb2.5K views
CasualなMongoDBのサービス運用Tips by Naoki Sega
CasualなMongoDBのサービス運用TipsCasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用Tips
Naoki Sega8.7K views
CyberAgentにおけるMongoDB by Akihiro Kuwano
CyberAgentにおけるMongoDBCyberAgentにおけるMongoDB
CyberAgentにおけるMongoDB
Akihiro Kuwano17.7K views
MongoDBのアレをアレする by Akihiro Kuwano
MongoDBのアレをアレするMongoDBのアレをアレする
MongoDBのアレをアレする
Akihiro Kuwano14.5K views
Db tech showcase2015 by emin_press
Db tech showcase2015Db tech showcase2015
Db tech showcase2015
emin_press7.1K views
AmebaのMongoDB活用事例 by Akihiro Kuwano
AmebaのMongoDB活用事例AmebaのMongoDB活用事例
AmebaのMongoDB活用事例
Akihiro Kuwano7.7K views
Fluentd+MongoDB+Groovy by Daisuke Ando
Fluentd+MongoDB+GroovyFluentd+MongoDB+Groovy
Fluentd+MongoDB+Groovy
Daisuke Ando483 views
Mongo db使ってみよう by Oda Shinsuke
Mongo db使ってみようMongo db使ってみよう
Mongo db使ってみよう
Oda Shinsuke1.1K views
Osc2008 Opensuse Moonlinx by Kazuhisa Hara
Osc2008 Opensuse MoonlinxOsc2008 Opensuse Moonlinx
Osc2008 Opensuse Moonlinx
Kazuhisa Hara711 views

More from 知教 本間

gumiにおける、海外支社とのAtlassian製品利用事例 by
gumiにおける、海外支社とのAtlassian製品利用事例gumiにおける、海外支社とのAtlassian製品利用事例
gumiにおける、海外支社とのAtlassian製品利用事例知教 本間
1.8K views31 slides
GitHubEnterpriseからBitbucket(Stash) への移行事例 by
GitHubEnterpriseからBitbucket(Stash) への移行事例GitHubEnterpriseからBitbucket(Stash) への移行事例
GitHubEnterpriseからBitbucket(Stash) への移行事例知教 本間
3.4K views24 slides
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について by
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化についてAWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について知教 本間
2.4K views28 slides
Use case for using the ElastiCache for Redis in production by
Use case for using the ElastiCache for Redis in productionUse case for using the ElastiCache for Redis in production
Use case for using the ElastiCache for Redis in production知教 本間
3.9K views21 slides
チームでChef serverを運用するには by
チームでChef serverを運用するにはチームでChef serverを運用するには
チームでChef serverを運用するには知教 本間
5.6K views34 slides
Redisへと至る、gumiデータストアの歴史 by
Redisへと至る、gumiデータストアの歴史Redisへと至る、gumiデータストアの歴史
Redisへと至る、gumiデータストアの歴史知教 本間
8.9K views40 slides

More from 知教 本間(7)

gumiにおける、海外支社とのAtlassian製品利用事例 by 知教 本間
gumiにおける、海外支社とのAtlassian製品利用事例gumiにおける、海外支社とのAtlassian製品利用事例
gumiにおける、海外支社とのAtlassian製品利用事例
知教 本間1.8K views
GitHubEnterpriseからBitbucket(Stash) への移行事例 by 知教 本間
GitHubEnterpriseからBitbucket(Stash) への移行事例GitHubEnterpriseからBitbucket(Stash) への移行事例
GitHubEnterpriseからBitbucket(Stash) への移行事例
知教 本間3.4K views
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について by 知教 本間
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化についてAWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
知教 本間2.4K views
Use case for using the ElastiCache for Redis in production by 知教 本間
Use case for using the ElastiCache for Redis in productionUse case for using the ElastiCache for Redis in production
Use case for using the ElastiCache for Redis in production
知教 本間3.9K views
チームでChef serverを運用するには by 知教 本間
チームでChef serverを運用するにはチームでChef serverを運用するには
チームでChef serverを運用するには
知教 本間5.6K views
Redisへと至る、gumiデータストアの歴史 by 知教 本間
Redisへと至る、gumiデータストアの歴史Redisへと至る、gumiデータストアの歴史
Redisへと至る、gumiデータストアの歴史
知教 本間8.9K views
ソーシャルゲームログ解析基盤のHadoop活用事例 by 知教 本間
ソーシャルゲームログ解析基盤のHadoop活用事例ソーシャルゲームログ解析基盤のHadoop活用事例
ソーシャルゲームログ解析基盤のHadoop活用事例
知教 本間5.3K views

Recently uploaded

光コラボは契約してはいけない by
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
16 views17 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
88 views41 slides
SSH応用編_20231129.pdf by
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
335 views13 slides
The Things Stack説明資料 by The Things Industries by
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
58 views29 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
18 views38 slides

Recently uploaded(11)

光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga16 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka88 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4335 views
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.58 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda355 views

MongoDBざっくり解説

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