SlideShare a Scribd company logo
1 of 74
Download to read offline
MongoDB



                   Masakazu Matsushita
                           @matsukaz
2011   7   28
•              @matsukaz

                •
                • Ameba Pico
                • DevLOVE
2011   7   28
2011   7   28
Ameba Pico
       •
       • 2010   3




2011   7   28
(2011   7   )

       •             390    MAU 60

       • 10     20

       •        3:7

       •
2011   7   28
2011   7   28
• MongoDB
                • Ameba Pico
                • MongoDB
2011   7   28
MongoDB


2011   7   28
Document-oriented storage
       •
       • BSON                       (Binary JSON)
                > db.users.save( { name : "hoge", age : 20 } )
                > db.users.save( { name : "fuga" } )

                > db.users.find()
                { "_id" : ObjectId("4d6b7ef5934c0000000053a4"),
                      "name" : "hoge", "age" : 20 }
                { "_id" : ObjectId("4d6b7f06934c0000000053a5"),
                      "name" : "fuga" }
2011   7   28
Full Index Support
       •
                Index

       • Unique Index         Index




2011   7   28
Replication
       • ReplicaSet
                                mongod
                               Member 1
                              (PRIMARY)




                    mongod                    mongod
                   Member 2                  Member 3
                (SECONDARY)               (SECONDARY)




2011   7   28
Replication
       • ReplicaSet
                              mongod
                             Member 1
                             (DOWN)




                   mongod                   mongod
                  Member 2                 Member 3
                 (PRIMARY)              (SECONDARY)




2011   7   28
Replication
       • ReplicaSet
                                 mongod
                                Member 1
                             (RECOVERING)




                   mongod                       mongod
                  Member 2                     Member 3
                 (PRIMARY)                  (SECONDARY)




2011   7   28
Replication
       • ReplicaSet
                                 mongod
                                Member 1
                             (SECONDARY)




                   mongod                      mongod
                  Member 2                    Member 3
                 (PRIMARY)                 (SECONDARY)




2011   7   28
Auto-Sharding
       •                            Shard Key
                Shard 1

                 users

                   name1    name2    name3

                   name4    name5    name6

                   name7    name8    name9


                 items
                    item1   item2    item3



2011   7   28
Auto-Sharding
       •                            Shard Key
                Shard 1                         Shard 2

                 users

                   name1    name2    name3

                   name4    name5    name6

                   name7    name8    name9


                 items
                    item1   item2    item3



2011   7   28
Auto-Sharding
       •                            Shard Key
                Shard 1                         Shard 2

                 users                           users

                   name1    name2    name3         name7   name8    name9

                   name4    name5    name6

                   name7    name8    name9


                 items
                    item1   item2    item3                             Chunk
                                             (Shard Key            Range)
2011   7   28
Auto-Sharding
       •                               Shard Key
                Shard 1                                  Shard 2

                 users                                    users

                   name1       name2    name3               name7    name8     name9

                   name4       name5    name6


                 items                                    mongos
                    item1      item2    item3



                     client
                      client                    mongos                       mongoc
                                                             Shard
2011   7   28
Ameba Pico



2011   7   28
2011            1                               Shard 1
                                                                                         mongoc
                                                          mongos
                                                          mongod         mongod          mongod

                                                Shard 2
   Web                     Socket                         mongos                         mongoc
                                                          mongod         mongod          mongod

                                                Shard 3
                                                          mongos                         mongoc
                                                          mongod         mongod          mongod
                           (memcached)




     LB             ID/Point/
  (HAProxy)                          MySQL
EC2
           m2.2xlarge (Mem 34.2GB / 13 EC2CU)
           c1.xlarge (Mem 7GB / 20 EC2CU)
           m1.large (Mem 7.5GB / 4 EC2CU)
           c1.medium (Mem 1.7GB / 5 EC2CU)
           m1.small (Mem 1.7GB / 1 EC2CU)        EBS      S3       CloudFront     Elastic MapReduce
2011   7   28
2011            3                               Shard 1
                                                                                         mongoc
                                                          mongos
                                                          mongod         mongod          mongod

                                                Shard 2
   Web                     Socket                         mongos                         mongoc
                                                          mongod         mongod          mongod

                                                Shard 3
                                                          mongos                         mongoc
                                                          mongod         mongod          mongod
                           (memcached)
                                                Shard 4
                                                          mongos
                                                          mongod         mongod          mongod

     LB             ID/Point/
  (HAProxy)                          MySQL
EC2
           m2.2xlarge (Mem 34.2GB / 13 EC2CU)
           c1.xlarge (Mem 7GB / 20 EC2CU)
           m1.large (Mem 7.5GB / 4 EC2CU)
           c1.medium (Mem 1.7GB / 5 EC2CU)
           m1.small (Mem 1.7GB / 1 EC2CU)        EBS      S3       CloudFront     Elastic MapReduce
2011   7   28
2011            5                               Shard 1
                                                                                         mongoc
                                                          mongos
                                                          mongod         mongod          mongod

                                                Shard 2
   Web                     Socket                         mongos                         mongoc
                                                          mongod         mongod          mongod

                                                Shard 3
                                                          mongos                         mongoc
                                                          mongod         mongod          mongod
                           (memcached)
                                                Shard 4
                                                          mongos
                                                          mongod         mongod          mongod

     LB             ID/Point/                   Shard 5
  (HAProxy)                          MySQL
                                                          mongod         mongod          mongod
EC2
           m2.2xlarge (Mem 34.2GB / 13 EC2CU)   Shard 6
           c1.xlarge (Mem 7GB / 20 EC2CU)
           m1.large (Mem 7.5GB / 4 EC2CU)                 mongod         mongod          mongod
           c1.medium (Mem 1.7GB / 5 EC2CU)
           m1.small (Mem 1.7GB / 1 EC2CU)        EBS      S3       CloudFront     Elastic MapReduce
2011   7   28
2011            7                                Shard 1
                                                                                          mongoc
                                                           mongod         mongod          mongod

           mongos               mongos           Shard 2
   Web                     Socket                                                         mongoc
                                                           mongod         mongod          mongod

                                                 Shard 3
           mongos                                                                         mongoc
                                                           mongod         mongod          mongod
                           (memcached)
                                                 Shard 4

                                                           mongod         mongod          mongod

     LB             ID/Point/                    Shard 5
  (HAProxy)                              MySQL
                                                           mongod         mongod          mongod
EC2
           m2.2xlarge (Mem 34.2GB / 13 EC2CU)    Shard 6
           c1.xlarge (Mem 7GB / 20 EC2CU)
           m1.large (Mem 7.5GB / 4 EC2CU)                  mongod         mongod          mongod
           c1.medium (Mem 1.7GB / 5 EC2CU)
           m1.small (Mem 1.7GB / 1 EC2CU)         EBS      S3       CloudFront     Elastic MapReduce
2011   7   28
MongoDB



2011   7   28
2011 2


2011   7   28
2011   7   28
2011   7   28
mongod
                Repair

2011   7   28
2011   7   28
2011   7   28
2011 3


2011   7   28
Shard

2011   7   28
2011   7   28
2011   7   28
2011   7   28
2011   7   28
http://www.flickr.com/photos/andreasmarx/190619661/
2011   7   28
6



2011   7   28
2011 5


2011   7   28
Shard
                2

2011   7   28
OFF

2011   7   28
MongoDB

2011   7   28
2011   7   28
2011   7   28
2011   7   28
2   Shard



2011   7   28
2011   7   28
2011   7   28
2011 6


2011   7   28
mongos

2011   7   28
2011   7   28
2011 7


2011   7   28
MongoDB


                1.6.5 → 1.8.2

2011   7   28
2011   7   28
2011   7   28
chunk


                    chunk

2011   7   28
http://www.flickr.com/photos/madhorse5/415958992/
2011   7   28
2011   7   28
4   Shard



2011   7   28
2011   7   28
2011   7   28
2011   7   28
2011   7   28
2011   7   28
2011   7   28
2011   7   28
Shard 2
       EC2


2011   7   28
30
       Repair

2011   7   28
2011   7   28
mongod
                1

2011   7   28
2011   7   28
2011   7   28
2011   7   28
2011   7   28

More Related Content

What's hot

ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説増田 亨
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜Naruhiko Ogasawara
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
NoSQLデータベースと位置情報
NoSQLデータベースと位置情報NoSQLデータベースと位置情報
NoSQLデータベースと位置情報Koji Ichiwaki
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...NTT DATA Technology & Innovation
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装infinite_loop
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門増田 亨
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
 
RDRAモデリングを見てみよう
RDRAモデリングを見てみようRDRAモデリングを見てみよう
RDRAモデリングを見てみようZenji Kanzaki
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話Takuto Wada
 
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークSQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークke-m kamekoopa
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう増田 亨
 

What's hot (20)

ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
NoSQLデータベースと位置情報
NoSQLデータベースと位置情報NoSQLデータベースと位置情報
NoSQLデータベースと位置情報
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
RDRAモデリングを見てみよう
RDRAモデリングを見てみようRDRAモデリングを見てみよう
RDRAモデリングを見てみよう
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
 
SQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォークSQLアンチパターン - ジェイウォーク
SQLアンチパターン - ジェイウォーク
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 

More from Masakazu Matsushita

It's up to you 〜 楽しさドリブンで歩んだ道 〜
It's up to you 〜 楽しさドリブンで歩んだ道 〜It's up to you 〜 楽しさドリブンで歩んだ道 〜
It's up to you 〜 楽しさドリブンで歩んだ道 〜Masakazu Matsushita
 
スタートアップで培ったアーキテクチャ設計ノウハウ
スタートアップで培ったアーキテクチャ設計ノウハウスタートアップで培ったアーキテクチャ設計ノウハウ
スタートアップで培ったアーキテクチャ設計ノウハウMasakazu Matsushita
 
全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり
全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり
全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のりMasakazu Matsushita
 
EFS利用事例 -Craft Warriorsのバトルを支える仕組み-
EFS利用事例 -Craft Warriorsのバトルを支える仕組み-EFS利用事例 -Craft Warriorsのバトルを支える仕組み-
EFS利用事例 -Craft Warriorsのバトルを支える仕組み-Masakazu Matsushita
 
TranslimitにおけるAWS活用術
TranslimitにおけるAWS活用術TranslimitにおけるAWS活用術
TranslimitにおけるAWS活用術Masakazu Matsushita
 
Interactive buttonsを利用したbotをつくってみた
Interactive buttonsを利用したbotをつくってみたInteractive buttonsを利用したbotをつくってみた
Interactive buttonsを利用したbotをつくってみたMasakazu Matsushita
 
Brain Dots at dots. - Brain Dotsのアーキテクチャ -
Brain Dots at dots. - Brain Dotsのアーキテクチャ -Brain Dots at dots. - Brain Dotsのアーキテクチャ -
Brain Dots at dots. - Brain Dotsのアーキテクチャ -Masakazu Matsushita
 
BrainWarsを支えるAWSサービスたち
BrainWarsを支えるAWSサービスたちBrainWarsを支えるAWSサービスたち
BrainWarsを支えるAWSサービスたちMasakazu Matsushita
 
TranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたちTranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたちMasakazu Matsushita
 
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)Masakazu Matsushita
 
1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャ1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャMasakazu Matsushita
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
 
後悔しないもんごもんごの使い方 〜アプリ編〜
後悔しないもんごもんごの使い方 〜アプリ編〜後悔しないもんごもんごの使い方 〜アプリ編〜
後悔しないもんごもんごの使い方 〜アプリ編〜Masakazu Matsushita
 
カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明Masakazu Matsushita
 
ソーシャルゲームにおけるAWS/MongoDB利用事例
ソーシャルゲームにおけるAWS/MongoDB利用事例ソーシャルゲームにおけるAWS/MongoDB利用事例
ソーシャルゲームにおけるAWS/MongoDB利用事例Masakazu Matsushita
 
海外向けサービスの苦労話
海外向けサービスの苦労話海外向けサービスの苦労話
海外向けサービスの苦労話Masakazu Matsushita
 
The Case for using MongoDB in Social Game - Animal Land
The Case for using MongoDB in Social Game - Animal LandThe Case for using MongoDB in Social Game - Animal Land
The Case for using MongoDB in Social Game - Animal LandMasakazu Matsushita
 
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal LandソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal LandMasakazu Matsushita
 

More from Masakazu Matsushita (20)

It's up to you 〜 楽しさドリブンで歩んだ道 〜
It's up to you 〜 楽しさドリブンで歩んだ道 〜It's up to you 〜 楽しさドリブンで歩んだ道 〜
It's up to you 〜 楽しさドリブンで歩んだ道 〜
 
スタートアップで培ったアーキテクチャ設計ノウハウ
スタートアップで培ったアーキテクチャ設計ノウハウスタートアップで培ったアーキテクチャ設計ノウハウ
スタートアップで培ったアーキテクチャ設計ノウハウ
 
全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり
全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり
全世界6,500万DL突破!ヒットゲームを作り上げたチームの道のり
 
EFS利用事例 -Craft Warriorsのバトルを支える仕組み-
EFS利用事例 -Craft Warriorsのバトルを支える仕組み-EFS利用事例 -Craft Warriorsのバトルを支える仕組み-
EFS利用事例 -Craft Warriorsのバトルを支える仕組み-
 
TranslimitにおけるAWS活用術
TranslimitにおけるAWS活用術TranslimitにおけるAWS活用術
TranslimitにおけるAWS活用術
 
Interactive buttonsを利用したbotをつくってみた
Interactive buttonsを利用したbotをつくってみたInteractive buttonsを利用したbotをつくってみた
Interactive buttonsを利用したbotをつくってみた
 
ダブルCTO
ダブルCTOダブルCTO
ダブルCTO
 
Brain Dots at dots. - Brain Dotsのアーキテクチャ -
Brain Dots at dots. - Brain Dotsのアーキテクチャ -Brain Dots at dots. - Brain Dotsのアーキテクチャ -
Brain Dots at dots. - Brain Dotsのアーキテクチャ -
 
BrainWarsを支えるAWSサービスたち
BrainWarsを支えるAWSサービスたちBrainWarsを支えるAWSサービスたち
BrainWarsを支えるAWSサービスたち
 
TranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたちTranslimitのChatOps事情と愉快なbotたち
TranslimitのChatOps事情と愉快なbotたち
 
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
 
1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャ1000万DL突破!BrainWarsのアーキテクチャ
1000万DL突破!BrainWarsのアーキテクチャ
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
後悔しないもんごもんごの使い方 〜アプリ編〜
後悔しないもんごもんごの使い方 〜アプリ編〜後悔しないもんごもんごの使い方 〜アプリ編〜
後悔しないもんごもんごの使い方 〜アプリ編〜
 
いつやるの?Git入門
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門
 
カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明
 
ソーシャルゲームにおけるAWS/MongoDB利用事例
ソーシャルゲームにおけるAWS/MongoDB利用事例ソーシャルゲームにおけるAWS/MongoDB利用事例
ソーシャルゲームにおけるAWS/MongoDB利用事例
 
海外向けサービスの苦労話
海外向けサービスの苦労話海外向けサービスの苦労話
海外向けサービスの苦労話
 
The Case for using MongoDB in Social Game - Animal Land
The Case for using MongoDB in Social Game - Animal LandThe Case for using MongoDB in Social Game - Animal Land
The Case for using MongoDB in Social Game - Animal Land
 
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal LandソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
 

Recently uploaded

AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 

Recently uploaded (20)

AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 

Mongo DBを半年運用してみた

  • 1. MongoDB Masakazu Matsushita @matsukaz 2011 7 28
  • 2. @matsukaz • • Ameba Pico • DevLOVE 2011 7 28
  • 3. 2011 7 28
  • 4. Ameba Pico • • 2010 3 2011 7 28
  • 5. (2011 7 ) • 390 MAU 60 • 10 20 • 3:7 • 2011 7 28
  • 6. 2011 7 28
  • 7. • MongoDB • Ameba Pico • MongoDB 2011 7 28
  • 9. Document-oriented storage • • BSON (Binary JSON) > db.users.save( { name : "hoge", age : 20 } ) > db.users.save( { name : "fuga" } ) > db.users.find() { "_id" : ObjectId("4d6b7ef5934c0000000053a4"), "name" : "hoge", "age" : 20 } { "_id" : ObjectId("4d6b7f06934c0000000053a5"), "name" : "fuga" } 2011 7 28
  • 10. Full Index Support • Index • Unique Index Index 2011 7 28
  • 11. Replication • ReplicaSet mongod Member 1 (PRIMARY) mongod mongod Member 2 Member 3 (SECONDARY) (SECONDARY) 2011 7 28
  • 12. Replication • ReplicaSet mongod Member 1 (DOWN) mongod mongod Member 2 Member 3 (PRIMARY) (SECONDARY) 2011 7 28
  • 13. Replication • ReplicaSet mongod Member 1 (RECOVERING) mongod mongod Member 2 Member 3 (PRIMARY) (SECONDARY) 2011 7 28
  • 14. Replication • ReplicaSet mongod Member 1 (SECONDARY) mongod mongod Member 2 Member 3 (PRIMARY) (SECONDARY) 2011 7 28
  • 15. Auto-Sharding • Shard Key Shard 1 users name1 name2 name3 name4 name5 name6 name7 name8 name9 items item1 item2 item3 2011 7 28
  • 16. Auto-Sharding • Shard Key Shard 1 Shard 2 users name1 name2 name3 name4 name5 name6 name7 name8 name9 items item1 item2 item3 2011 7 28
  • 17. Auto-Sharding • Shard Key Shard 1 Shard 2 users users name1 name2 name3 name7 name8 name9 name4 name5 name6 name7 name8 name9 items item1 item2 item3 Chunk (Shard Key Range) 2011 7 28
  • 18. Auto-Sharding • Shard Key Shard 1 Shard 2 users users name1 name2 name3 name7 name8 name9 name4 name5 name6 items mongos item1 item2 item3 client client mongos mongoc Shard 2011 7 28
  • 20. 2011 1 Shard 1 mongoc mongos mongod mongod mongod Shard 2 Web Socket mongos mongoc mongod mongod mongod Shard 3 mongos mongoc mongod mongod mongod (memcached) LB ID/Point/ (HAProxy) MySQL EC2 m2.2xlarge (Mem 34.2GB / 13 EC2CU) c1.xlarge (Mem 7GB / 20 EC2CU) m1.large (Mem 7.5GB / 4 EC2CU) c1.medium (Mem 1.7GB / 5 EC2CU) m1.small (Mem 1.7GB / 1 EC2CU) EBS S3 CloudFront Elastic MapReduce 2011 7 28
  • 21. 2011 3 Shard 1 mongoc mongos mongod mongod mongod Shard 2 Web Socket mongos mongoc mongod mongod mongod Shard 3 mongos mongoc mongod mongod mongod (memcached) Shard 4 mongos mongod mongod mongod LB ID/Point/ (HAProxy) MySQL EC2 m2.2xlarge (Mem 34.2GB / 13 EC2CU) c1.xlarge (Mem 7GB / 20 EC2CU) m1.large (Mem 7.5GB / 4 EC2CU) c1.medium (Mem 1.7GB / 5 EC2CU) m1.small (Mem 1.7GB / 1 EC2CU) EBS S3 CloudFront Elastic MapReduce 2011 7 28
  • 22. 2011 5 Shard 1 mongoc mongos mongod mongod mongod Shard 2 Web Socket mongos mongoc mongod mongod mongod Shard 3 mongos mongoc mongod mongod mongod (memcached) Shard 4 mongos mongod mongod mongod LB ID/Point/ Shard 5 (HAProxy) MySQL mongod mongod mongod EC2 m2.2xlarge (Mem 34.2GB / 13 EC2CU) Shard 6 c1.xlarge (Mem 7GB / 20 EC2CU) m1.large (Mem 7.5GB / 4 EC2CU) mongod mongod mongod c1.medium (Mem 1.7GB / 5 EC2CU) m1.small (Mem 1.7GB / 1 EC2CU) EBS S3 CloudFront Elastic MapReduce 2011 7 28
  • 23. 2011 7 Shard 1 mongoc mongod mongod mongod mongos mongos Shard 2 Web Socket mongoc mongod mongod mongod Shard 3 mongos mongoc mongod mongod mongod (memcached) Shard 4 mongod mongod mongod LB ID/Point/ Shard 5 (HAProxy) MySQL mongod mongod mongod EC2 m2.2xlarge (Mem 34.2GB / 13 EC2CU) Shard 6 c1.xlarge (Mem 7GB / 20 EC2CU) m1.large (Mem 7.5GB / 4 EC2CU) mongod mongod mongod c1.medium (Mem 1.7GB / 5 EC2CU) m1.small (Mem 1.7GB / 1 EC2CU) EBS S3 CloudFront Elastic MapReduce 2011 7 28
  • 24. MongoDB 2011 7 28
  • 25. 2011 2 2011 7 28
  • 26. 2011 7 28
  • 27. 2011 7 28
  • 28. mongod Repair 2011 7 28
  • 29. 2011 7 28
  • 30. 2011 7 28
  • 31. 2011 3 2011 7 28
  • 32. Shard 2011 7 28
  • 33. 2011 7 28
  • 34. 2011 7 28
  • 35. 2011 7 28
  • 36. 2011 7 28
  • 38. 6 2011 7 28
  • 39. 2011 5 2011 7 28
  • 40. Shard 2 2011 7 28
  • 41. OFF 2011 7 28
  • 42. MongoDB 2011 7 28
  • 43. 2011 7 28
  • 44. 2011 7 28
  • 45. 2011 7 28
  • 46. 2 Shard 2011 7 28
  • 47. 2011 7 28
  • 48. 2011 7 28
  • 49. 2011 6 2011 7 28
  • 50. mongos 2011 7 28
  • 51. 2011 7 28
  • 52. 2011 7 2011 7 28
  • 53. MongoDB 1.6.5 → 1.8.2 2011 7 28
  • 54. 2011 7 28
  • 55. 2011 7 28
  • 56. chunk chunk 2011 7 28
  • 58. 2011 7 28
  • 59. 4 Shard 2011 7 28
  • 60. 2011 7 28
  • 61. 2011 7 28
  • 62. 2011 7 28
  • 63. 2011 7 28
  • 64. 2011 7 28
  • 65. 2011 7 28
  • 66. 2011 7 28
  • 67. Shard 2 EC2 2011 7 28
  • 68. 30 Repair 2011 7 28
  • 69. 2011 7 28
  • 70. mongod 1 2011 7 28
  • 71. 2011 7 28
  • 72. 2011 7 28
  • 73. 2011 7 28
  • 74. 2011 7 28