SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
MongoDBJP
2013納涼祭
About me
{
名前: 窪田博昭
会社: 楽天(株)
肩書: MongoDBJP代表
趣味: Golf,フットサル
悩み: 30代は体が・・・
twitter:@crumbjp
github: github.com/crumbjp
}
MongoDB ?
MongoDBの哲学(優先順位)
1.Read性能 >>> 全て
2.データ一貫性
3.システム堅牢性
4.データ更新性能
書き込み << 読み込み
なシステムに
最適!!
WEBシステムって
大体そうだよね!
今日のお題は・・・
嘘・・・
じゃないよ~!
選挙だ!
わかっちゃった人は
ニヤリw
これは何?
2/3
3/5
4/7
過半数とは
全体の半分よりも多い数
ニヤリ?
MongoDB
replica-set
-22 -
replica-set
Primary
Secondary SecondarySecondarySecondary
Primary: 書き込み可能ノード
Secondary: 読み取り専用ノード
全てのノードは同じデータを持っている
同期
-23 -
replica-set
Secondary SecondarySecondarySecondary
MongoDBはPrimaryノードを
選挙で選ぶ。
下の例では得票数5/5で当選!
Secondary
投票
-24 -
replica-set
Secondary SecondarySecondarySecondary
MongoDBはPrimaryノードを
選挙で選ぶ。
下の例では得票数5/5で当選!
Secondary Primary
昇格
-25 -
replica-set
Secondary SecondarySecondarySecondary
Primaryノードが死んだ場合も
残ったノードで選挙を行う。
下の例では得票数4/5で当選!
Primary
投票
-26 -
replica-set
Secondary SecondarySecondaryPrimary
Primaryノードが死んだ場合も
残ったノードで選挙を行う。
下の例では得票数4/5で当選!
Primary
となると、、、
-28 -
replica-set
SecondarySecondary
構成ノードが死に過ぎると
選挙で過半数割れが起きる。
こうなるとPrimaryノード不在となる
Primary
Primary Primary
投票
-29 -
replica-set
Primaryは書き込みを行うノード
replica-setは書き込み不能となる
データの更新は当然!
replica-setの構成変更も不可!!
致命的!!
これは何?
2/3
3/5
4/7
デッドライン
生存数 / 全数
2/3
3/5
4/7
そもそも何でこんな
難儀な仕組み
になってんの?
1ノードでも
生きてれば良いじゃん!
そうは行かない!
-35 -
replica-set
Primary
Secondary SecondarySecondarySecondary
常時同期
選挙に行かないとをやらないと
大変な事に!!
負荷や
ネットワークトラブル等で
ノード間通信が途切れる
と・・・
-37 -
replica-set
Primary
Secondary SecondarySecondarySecondary
もしネットワークが分断したら?
分断
常時同期
-38 -
replica-set
Primary
Secondary SecondaryPrimarySecondary
Primary
常時同期
分断
なんと
Primaryが2つ
に!!
こうなると当然
左右双方に別々の更新が走り
データがズレるぜ!
Primary
Secondary SecondaryPrimarySecondary
Primary
常時同期
分断
replica-set
データ更新 データ更新
あ”ー
データ破壊。。
これが分散システムの
Split brain
データの一貫性が
意味的に破壊されるので
修復できない
ちなみに、、
split brainが起きる様なケースでは
高負荷やトラブルが起きている。
大抵は1ノード毎バラバラになるし
データ修復どころか大量のログから
現象を追う事すら困難。。。
-43 -
replica-set
Primary
Primary
こんな風に・・・
Primary 分断
Primary Primary Primary
今回の運用対象
http://www.mongodb.jp
www.mongodb.jp
httpd
PHP
mongosmemcached
mongod
secondary
host B
mongod
primary
host C
mongod
secondary
hidden
slaveDelay
replica-set
www.mongodb.jp
httpd
PHP
mongosmemcached
mongod
secondary
host B
mongod
primary
host C
mongod
secondary
hidden
slaveDelay
replica-set
・負荷的に余裕なので基本はAll in one
・基本secondaryから読み、書込みは極少ない
・host C はバックアップと非常時のリカバリ
www.mongodb.jpさえ無事なら
大きな障害にはならない
なので思い切って
ヤル!!

Weitere ähnliche Inhalte

Was ist angesagt? (9)

Oscの沼にはまった
Oscの沼にはまったOscの沼にはまった
Oscの沼にはまった
 
Don't need docker
Don't need dockerDon't need docker
Don't need docker
 
Gentoo for Pythonista
Gentoo for PythonistaGentoo for Pythonista
Gentoo for Pythonista
 
Groongaドキュメント読書会4の進め方
Groongaドキュメント読書会4の進め方Groongaドキュメント読書会4の進め方
Groongaドキュメント読書会4の進め方
 
Gentoo is painful_but_useful
Gentoo is painful_but_usefulGentoo is painful_but_useful
Gentoo is painful_but_useful
 
Http2入門の入門
Http2入門の入門Http2入門の入門
Http2入門の入門
 
フロントエンド開発の3ステップ(npm事始め)
フロントエンド開発の3ステップ(npm事始め)フロントエンド開発の3ステップ(npm事始め)
フロントエンド開発の3ステップ(npm事始め)
 
20100729.atlassian
20100729.atlassian20100729.atlassian
20100729.atlassian
 
Lt
LtLt
Lt
 

Andere mochten auch

No sql for sql professionals
No sql for sql professionalsNo sql for sql professionals
No sql for sql professionals
Ric Centre
 
2300.10.133 rev a
2300.10.133 rev a2300.10.133 rev a
2300.10.133 rev a
Ivan Zea
 
презентация элективного курса по русскому языку
презентация элективного курса по русскому языкупрезентация элективного курса по русскому языку
презентация элективного курса по русскому языку
loksal
 
Аавтоматизация. Что и зачем
Аавтоматизация. Что и зачемАавтоматизация. Что и зачем
Аавтоматизация. Что и зачем
VYuri
 
Hist 140 hoover dam
Hist 140   hoover damHist 140   hoover dam
Hist 140 hoover dam
flip7rider
 
Formatofduediligence 020608
Formatofduediligence 020608Formatofduediligence 020608
Formatofduediligence 020608
Anji Uppari
 
Relatório de monitoramento do plano nacional de cidadania
Relatório de monitoramento do plano nacional de cidadaniaRelatório de monitoramento do plano nacional de cidadania
Relatório de monitoramento do plano nacional de cidadania
Cristiane Novaes
 
My Favorite Movie
My Favorite MovieMy Favorite Movie
My Favorite Movie
cecil52
 
Team 4 Chp 4 & 5
Team 4 Chp 4 & 5Team 4 Chp 4 & 5
Team 4 Chp 4 & 5
tkern317
 
Creating A Sample Libary Assigment Brief
Creating A Sample Libary Assigment Brief Creating A Sample Libary Assigment Brief
Creating A Sample Libary Assigment Brief
connor-sherwin
 

Andere mochten auch (20)

No sql for sql professionals
No sql for sql professionalsNo sql for sql professionals
No sql for sql professionals
 
2300.10.133 rev a
2300.10.133 rev a2300.10.133 rev a
2300.10.133 rev a
 
Drupal7 Blockでサイト構築しよう@Drupal cafe
Drupal7 Blockでサイト構築しよう@Drupal cafeDrupal7 Blockでサイト構築しよう@Drupal cafe
Drupal7 Blockでサイト構築しよう@Drupal cafe
 
L’aparell digestiu
L’aparell  digestiuL’aparell  digestiu
L’aparell digestiu
 
2015 multilatinas brochure
2015 multilatinas brochure2015 multilatinas brochure
2015 multilatinas brochure
 
Ushk 4
Ushk 4Ushk 4
Ushk 4
 
презентация элективного курса по русскому языку
презентация элективного курса по русскому языкупрезентация элективного курса по русскому языку
презентация элективного курса по русскому языку
 
Model day
Model dayModel day
Model day
 
Broan nutone canada green initiatives 2006 2010
Broan nutone canada green initiatives 2006 2010Broan nutone canada green initiatives 2006 2010
Broan nutone canada green initiatives 2006 2010
 
Аавтоматизация. Что и зачем
Аавтоматизация. Что и зачемАавтоматизация. Что и зачем
Аавтоматизация. Что и зачем
 
Html5 fun@Tokyo Bootstrap Tips
Html5 fun@Tokyo Bootstrap TipsHtml5 fun@Tokyo Bootstrap Tips
Html5 fun@Tokyo Bootstrap Tips
 
Hist 140 hoover dam
Hist 140   hoover damHist 140   hoover dam
Hist 140 hoover dam
 
Formatofduediligence 020608
Formatofduediligence 020608Formatofduediligence 020608
Formatofduediligence 020608
 
Relatório de monitoramento do plano nacional de cidadania
Relatório de monitoramento do plano nacional de cidadaniaRelatório de monitoramento do plano nacional de cidadania
Relatório de monitoramento do plano nacional de cidadania
 
Optimal management presentation for investors about supply chains optimization
Optimal management presentation for investors about supply chains optimizationOptimal management presentation for investors about supply chains optimization
Optimal management presentation for investors about supply chains optimization
 
AdMore Introduction
AdMore IntroductionAdMore Introduction
AdMore Introduction
 
My Favorite Movie
My Favorite MovieMy Favorite Movie
My Favorite Movie
 
Team 4 Chp 4 & 5
Team 4 Chp 4 & 5Team 4 Chp 4 & 5
Team 4 Chp 4 & 5
 
Creating A Sample Libary Assigment Brief
Creating A Sample Libary Assigment Brief Creating A Sample Libary Assigment Brief
Creating A Sample Libary Assigment Brief
 
Html5fun@東京 Bootstrapにアニメーションを付けよう
Html5fun@東京 Bootstrapにアニメーションを付けようHtml5fun@東京 Bootstrapにアニメーションを付けよう
Html5fun@東京 Bootstrapにアニメーションを付けよう
 

Ähnlich wie MongoDBJP 納涼もんご祭り (10)

DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?
 
MongoDBCSharp
MongoDBCSharpMongoDBCSharp
MongoDBCSharp
 
PostgreSQLの冗長化について
PostgreSQLの冗長化についてPostgreSQLの冗長化について
PostgreSQLの冗長化について
 
SnapDishの事例
SnapDishの事例SnapDishの事例
SnapDishの事例
 
Casual Compression on MongoDB
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDB
 
Db tech showcase2015
Db tech showcase2015Db tech showcase2015
Db tech showcase2015
 
Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clustersDb tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
 
jTthree V3 technical preview
jTthree V3 technical previewjTthree V3 technical preview
jTthree V3 technical preview
 
Jubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニングJubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニング
 
Postgre sqlから見るnosql
Postgre sqlから見るnosqlPostgre sqlから見るnosql
Postgre sqlから見るnosql
 

Mehr von Hiroaki Kubota (8)

MongoDBで自然言語処理
MongoDBで自然言語処理MongoDBで自然言語処理
MongoDBで自然言語処理
 
Why mincore() returns different value of stat ?
Why mincore() returns different value of stat ?Why mincore() returns different value of stat ?
Why mincore() returns different value of stat ?
 
Mongo ghostsync and slaveDelay (Japanease)
Mongo ghostsync and slaveDelay (Japanease)Mongo ghostsync and slaveDelay (Japanease)
Mongo ghostsync and slaveDelay (Japanease)
 
Mongo ghostsync and slaveDelay
Mongo ghostsync and slaveDelayMongo ghostsync and slaveDelay
Mongo ghostsync and slaveDelay
 
C10K on Mongo's sharding
C10K on Mongo's shardingC10K on Mongo's sharding
C10K on Mongo's sharding
 
Cockatoo
CockatooCockatoo
Cockatoo
 
MongoTokyo
MongoTokyoMongoTokyo
MongoTokyo
 
Albatross
AlbatrossAlbatross
Albatross
 

MongoDBJP 納涼もんご祭り