Database scaling patternsMariusz Gilthe we a way
View Slide
ABOUT ME
EXPERIENCEfrom 1 to 100+ DB servers
What i it aABOUT?
DATABASE IS MAIN PROBLEMIN 99% OF WEB APPS
TYPICAL ISSUES?NORMALIZED TO xNFINEFFICIENT SCHEMA,BAD INDEXES AND QUERIES,UNUSED SLOW-LOG
shared setup
!" # $ %%& ' !( !" # !" #shared server
cache all the things,wisely...
separated servers
!" # $ %%& ' !( !" # !" #DB server
scale up
denormalization
DB server !" # $ %%& ' !( !" # !" # !" # $ %%& ' !( !" # !" #DB server
DB server !" # $ %%& ' !( !" # !" #DB server !" # $ %%& ' !( !" # ) !" # )
DB server DB server !" # $ %%& ' !( !" # ) !" # ) # $ %%& ' !( !" # !" #ID SENDER_ID RECEIVER_ID ...1 10 12 20 23 10 14 20 35 10 16 20 47 10 1USER_ID MESSAGE_ID1 11 31 51 72 23 44 6USER_ID MESSAGE_ID10 110 310 510 720 220 420 6
replication
MASTER-SLAVEscale reads, but not writes
DB master !" # $ %%& ' !( !" # ) !" # ) DB slave !" # $ %%& ' !( !" # ) !" # ) DB slave !" # $ %%& ' !( !" # ) !" # ) ...INSERT...UPDATE...DELETE...SELECT...SELECT...
MASTER-MASTERjust for HA, not for scaling
DB master !" # $ %%& ' !( !" # ) !" # ) DB master !" # $ %%& ' !( !" # ) !" # ) INSERT...UPDATE...DELETE...SELECT...
sharding
DB shard $ %%& ' !( !" # ) !" # ) DB shard !" # $ %%& ' !( !" # ) !" # ) DB shard !" # $ %%& ' !( !" # ) !" # ) INSERT...UPDATE...DELETE...SELECT...INSERT...UPDATE...DELETE...SELECT...INSERT...UPDATE...DELETE...SELECT...
Sharding iHARD!
Resharding iHARDER!
JOINSFORGET ABOUT ITdata could be splitted into many shards
ALTERSTHINK TWICE ABOUT ITaltering many shards could be a nice challenge
fault tolerantmulti-master sharding
SCALE WHEN NECESSARYNOT FOR FUN
AlternativeTOOLS?
Thanks! Any questions?@mariuszgil[email protected]