Recommended
PDF
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
PDF
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
PPTX
PDF
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
PDF
KEY
ソーシャルゲームログ解析基盤のMongoDB活用事例
PPTX
PDF
PDF
PPT
PDF
PDF
PPTX
Fluentd+elasticsearch+kibana(fluentd編)
PDF
MongoDB very basic (Japanese) / MongoDB基礎の基礎
KEY
PDF
PPTX
PPT
ODP
PPTX
MongoDB on EC2 #mongodbcasual
PPTX
日本語:Mongo dbに於けるシャーディングについて
PDF
PDF
ソーシャルゲームにおけるAWS/MongoDB利用事例
PDF
PPT
PDF
PDF
MyNA JPUG study 20160220-postgresql-json-datatype
PPTX
DOC
DOC
More Related Content
PDF
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
PDF
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
PPTX
PDF
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
PDF
KEY
ソーシャルゲームログ解析基盤のMongoDB活用事例
PPTX
PDF
What's hot
PDF
PPT
PDF
PDF
PPTX
Fluentd+elasticsearch+kibana(fluentd編)
PDF
MongoDB very basic (Japanese) / MongoDB基礎の基礎
KEY
PDF
PPTX
PPT
ODP
PPTX
MongoDB on EC2 #mongodbcasual
PPTX
日本語:Mongo dbに於けるシャーディングについて
PDF
PDF
ソーシャルゲームにおけるAWS/MongoDB利用事例
PDF
PPT
PDF
PDF
MyNA JPUG study 20160220-postgresql-json-datatype
PPTX
Similar to MongoDB勉強会資料
DOC
DOC
PDF
PDF
DB tech showcase: 噂のMongoDBその用途は?
ODP
PDF
PDF
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
PDF
CasualなMongoDBのサービス運用Tips
PDF
PDF
MongoDBではじめるカジュアルなタイムラインシステム
PDF
PDF
PPTX
PDF
Casual Compression on MongoDB
PPTX
PDF
PDF
データベース勉強会 In 広島 mongodb
PPTX
PPTX
MongoDB: システム可用性を拡張するインデクス戦略
PPTX
MongoDB勉強会資料 1. 2. 3. 4. 5. 6. 7. MongoDB勉強会
第二回 MongoDB勉強会
を使った理由
MongoDBを使った理由
• 使ってみたかった
• 社内ではpicoで利用実績あり
• データ分散の処理は大変
• データアクセスが高速(と聞いて)
• 自動でfailover
• ドキュメント形式の柔軟性
7
8. 9. 10. 11. 12. 13. 14. 15. 16. MongoDB勉強会
第二回 MongoDB勉強会
> db.Room.findOne({roomId:603});
{
"_id" : ObjectId("4d9e772074978c29974fba92"),
"roomId" : NumberLong(603),
"userId" : NumberLong(238),
"text" : "限定ヒトコト(グループ5)",
"registDate" : "Fri Apr 08 2011 11:46:56 GMT+0900 (JST)",
"editDate" : "Fri Apr 08 2011 11:46:56 GMT+0900 (JST)",
"emaFlag" : 0,
"deleteFlag" : 0,
"members" : [
NumberLong(239),
NumberLong(274),
NumberLong(238)
]
}
16
17. 18. MongoDB勉強会
第二回 MongoDB勉強会
テストしてみました
• 環境
– App (Apache / Tomcat)
• Intel(R) Xeon(R) CPU X3430 @ 2.40GHz (4core)
• 12G RAM
– MongoDB
• Xfs
• Intel(R) Xeon(R) CPU X3430 @ 2.40GHz (4core)
• 16G RAM
– ActiveMQ
• Intel(R) Xeon(R) CPU L5410 @ 2.33GHz (4core)
• 12G RAM
18
19. 20. MongoDB勉強会
第二回 MongoDB勉強会
タイムラインの作成が重い・・・
• 変遷
– timelineDao.save(timeline, WriteConcern.SAFE);
– 1件ずつinsert
» Reciever側の負荷が高騰
– timelineDao.getCollection().insert(timelineList, WriteConcern.SAFE);
– Bulk insertに変更
» Thread dumpなどで見ているとまだ詰まってる
20
21. MongoDB勉強会
第二回 MongoDB勉強会
タイムラインの作成が重い・・・
• 変遷
– timelineDao.save(timeline, WriteConcern.SAFE);
– 1件ずつinsert
» Reciever側の負荷が高騰
– timelineDao.getCollection().insert(timelineList, WriteConcern.SAFE);
– Bulk insertに変更
» Thread dumpなどで見ているとまだ詰まってる
– timelineDao.getCollection().insert(timelineList);
– 書き込みチェックなしに
21
22. 23. 24. MongoDB勉強会
第二回 MongoDB勉強会
【Error】 Switching Master
】
• 接続先がmongosプロセス1つの時、mongoインスタンス
作成時に渡すIPがListだと発生
■before
List<ServerAddress> replSets = new ArrayList<ServerAddress>();
for(String server : serverList)
replSets.add(new ServerAddress(server, port));
mongo = new Mongo(replSets, option.createMongoOptions());
■after
ServerAddress addr = new ServerAddress(mongos, port);
mongo = new Mongo(addr, option.createMongoOptions());
24
25. MongoDB勉強会
第二回 MongoDB勉強会
・・・じゃない
slaveOk・・・じゃない
• mongosを通すとslaveに参照クエリが投げられない
• ReplicaSet単体で動かしているときは問題なし
• 書き込みチェック(WriteConcern.SAFE など)は内部
的に書き込み後、findOneを発行
• Collectionのlock回数を少しでも減らしたい
• 参照は別サーバーに向いて欲しい
» 調査中…(´・ω・`)
25
26. MongoDB勉強会
第二回 MongoDB勉強会
その他いろいろ
• Out of semaphores to get db connection
• MongoOptionsの下記の値を調整
connectionPerHost * threadsAllowedToBlockForConnectionMultiplier >= maxthreads
• Too Many Open Files
• Test中にnic死亡
• Xfsの設定はmongo推奨に合わせるのがよさそう
26
27. 28. MongoDB勉強会
第二回 MongoDB勉強会
今後
• より複雑なクエリでの性能検証
> db.Entry.find({
... userId:26,
... replyUserId:{$nin:[0,26]},
... entryType:{$in:["ENTRY","PHOTO"]},
... deleteFlag:0,
... $where:"this.replyEntryId <= this.parentEntryId"}).limit(50).sort({registDate:-1}).explain();
{
"cursor" : "BtreeCursor userId",
"nscanned" : 176,
"nscannedObjects" : 176,
"n" : 18,
"scanAndOrder" : true,
"millis" : 2,
"indexBounds" : {
"userId" : [
[
26,
26
]
]
}
}
28
29.