Contenu connexe Plus de Masakazu Matsushita (20) Mongo DBを半年運用してみた1. MongoDB
Masakazu Matsushita
@matsukaz
2011 7 28
2. • @matsukaz
•
• Ameba Pico
• DevLOVE
2011 7 28
5. (2011 7 )
• 390 MAU 60
• 10 20
• 3:7
•
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
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
53. MongoDB
1.6.5 → 1.8.2
2011 7 28
56. chunk
chunk
2011 7 28