MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko...
Transcript of MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko...
![Page 1: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/1.jpg)
MongoDB Scalability Best Practices
Jason Terpko DBA, Rackspace/ObjectRocket www.linkedin.com/in/jterpko
1
![Page 2: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/2.jpg)
Background • Started out in relational databases in public
education then financial services • Next came online media distribution combined with a
paywall • For analytics, started working with columnar
databases and engines with compression • First NoSQL project was application regression
testing • Made the switch to NoSQL at ObjectRocket by
Rackspace
www.objectrocket.com 2
![Page 3: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/3.jpg)
Overview
• General Scalability • Schema Design • Scaling Options in MongoDB • Locking • Sharding • Right Tool For the Job
www.objectrocket.com 3
![Page 4: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/4.jpg)
General Scalability
www.objectrocket.com
Ver(cal(Up)Horizontal(Out)
4
![Page 5: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/5.jpg)
Schema Design • Field Types • Field Names • Arrays • Embedded Documents • Document Size
www.objectrocket.com 5
![Page 6: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/6.jpg)
Documents
www.objectrocket.com
{"_id":ObjectId("570680d891442f6efaff2005"),"name":"JohnDoe","age":45,"height":5.9,"weight":NumberLong(165),"updated_at":"2016-01-0715:46:32","ac(ve":true,"nickname":null,"zipcodes":["10013"],"phone":"212-555-1212"
}
{"_id":ObjectId("570680d891442f6efaff2005"),"n":"JohnDoe","a":45,"h":5.9,"w":NumberLong(165),"u":ISODate("2016-01-07T15:46:32.085Z"),"ac":true,"nn":null,"z":["10013"],"p":"212-555-1212"
}
6
![Page 7: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/7.jpg)
Scaling Options In MongoDB • Vertical
• Replica Set • Sharding (Horizontal) • Pluggable Engine
www.objectrocket.com 7
![Page 8: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/8.jpg)
Vertical
www.objectrocket.com
Client
• Hardware/Topology• ReducedComplexity• IncreasedHardwareCost• UpgradeCycles
• Applica(onUseCases• RequiresReadConsistency• NotAbleToShard• ShardingNotRequired
8
![Page 9: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/9.jpg)
Replica Set
www.objectrocket.com
Client
• Hardware/Topology• ReducedComplexity• ReducedHardwareCost
• Applica(onUseCases• AllowsForEventualConsistency• NotAbleToShard• ShardingNotRequired
9
![Page 10: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/10.jpg)
Sharding
www.objectrocket.com
MongoS
• Hardware/Topology• IncreasedComplexity• BeherU(liza(on
• Applica(on• WrihenForSharding• Op(onalEventualConsistency• Increasedthroughput
10
![Page 11: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/11.jpg)
Pluggable Engine API
www.objectrocket.com 11
MMAP
![Page 12: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/12.jpg)
Locking • MongoDB Version • Database And Collections • Engine • Sharding
www.objectrocket.com 12
![Page 13: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/13.jpg)
Locking
www.objectrocket.com
• MongoDBDefaults• 2.4&2.6–Database• 3.0–Collec(on• 3.2–Document
• DatabaseandCollec(onDrops• Database–Notfreebutcheap• Collec(on-Free
• Engine• MMAP–Database• MMAPv1–Collec(on• WiredTiger–Document• Rocks–Document
• TTLandSecondary's• AddedTTLDeletes• Replica(onBatching
13
![Page 14: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/14.jpg)
Sharding • MongoS • Shard Key Selection • Distributed Writes • Targeted Operations
www.objectrocket.com 14
![Page 15: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/15.jpg)
MongoS
www.objectrocket.com
Applica(on
Applica(on
LoadBalancer
Applica(on
15
![Page 16: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/16.jpg)
Shard Key Selection
www.objectrocket.com
• Limita(ons• Opera(ons• UniqueConstraints• Immutable
• Process• Variety(SchemaAnalyzer)• system.profile• StagingandQA
• Chunks• Preven(ngJumbos• Pre-splipngCollec(ons• BalancingOverhead
• Throughput• DistributedWrites• TargetedOps• MergingofData
16
![Page 17: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/17.jpg)
Non-Distributed Writes
www.objectrocket.com
10% 20% 30% 40%
Notanefficientuseofallresources.
moveChunk()Key:{u:1}
17
![Page 18: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/18.jpg)
Distributed Writes
www.objectrocket.com
25% 25% 25% 25%
Efficientuseofallresourcesandwritescopes.
Key:{u:“hashed“}
18
![Page 19: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/19.jpg)
Targeted Operations
www.objectrocket.com
Efficientuseofresources.
>db.mycoll.find({u:"...",c_at:"..."})
Key:{u:1,c_at:1}
19
![Page 20: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/20.jpg)
Partially Targeted
www.objectrocket.com
Efficientuseofresources.
Key:{u:1,c_at:1}
>db.mycoll.find({u:"...",u_at:"..."})
20
![Page 21: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/21.jpg)
Scatter-Gathers
www.objectrocket.com
Notanefficientuseofresources.
Key:{u:1,c_at:1}
>db.mycoll.find({u_at:"..."})
21
![Page 22: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/22.jpg)
Using the Right Tool : Mongo
• Unstructured Data
• Retail Catalog Data • Social Media User Data • Analytic Data Rollups • Gaming Profiles
www.objectrocket.com 22
![Page 23: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/23.jpg)
Using the Right Tool : ... maybe not Mongo
• Text Search • Geo • Key / Value • Transactions
www.objectrocket.com 23
![Page 24: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/24.jpg)
Questions?
www.objectrocket.com 24
Media Resources:
MongoDB Leaf - http://bit.ly/29bbJIR RocksDB Logo - http://bit.ly/29cYFUS WT Logo - http://bit.ly/294QEhw
![Page 25: MongoDB Scalability Best Practices - Percona · MongoDB Scalability Best Practices Jason Terpko DBA, Rackspace/ObjectRocket 1](https://reader034.fdocuments.us/reader034/viewer/2022051608/603eff77c1246c59995525eb/html5/thumbnails/25.jpg)
Thank you! Address: 401 Congress Ave Suite 1950 Austin, TX 78701 Support: 1-800-961-4454 Sales: 1-888-440-3242
www.objectrocket.com
25