Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Database scaling patterns

Database scaling patterns

Mariusz Gil

April 12, 2013
Tweet

More Decks by Mariusz Gil

Other Decks in Programming

Transcript

  1. Database scaling patterns
    Mariusz Gil
    the we a way

    View Slide

  2. ABOUT ME

    View Slide

  3. EXPERIENCE
    from 1 to 100+ DB servers

    View Slide

  4. EXPERIENCE
    from 1 to 100+ DB servers

    View Slide

  5. What i it a
    ABOUT
    ?

    View Slide

  6. DATABASE IS MAIN PROBLEM
    IN 99% OF WEB APPS

    View Slide

  7. TYPICAL ISSUES?
    NORMALIZED TO xNF
    INEFFICIENT SCHEMA,
    BAD INDEXES AND QUERIES,
    UNUSED SLOW-LOG

    View Slide

  8. shared setup

    View Slide







  9. !" #





    $

    %%
    & ' !(

    !" #
    !" #
    shared server

    View Slide

  10. cache all the things,
    wisely...

    View Slide







  11. !" #





    $

    %%
    & ' !(

    !" #
    !" #
    shared server

    View Slide

  12. separated servers

    View Slide







  13. !" #





    $

    %%
    & ' !(

    !" #
    !" #
    DB server

    View Slide

  14. scale up

    View Slide

  15. scale up

    View Slide

  16. denormalization

    View Slide

  17. DB server






    !" #





    $

    %%
    & ' !(

    !" #
    !" #






    !" #





    $

    %%
    & ' !(

    !" #
    !" #
    DB server

    View Slide

  18. DB server






    !" #





    $

    %%
    & ' !(

    !" #
    !" #
    DB server






    !" #





    $

    %%
    & ' !(

    !" #



    )
    !" #



    )

    View Slide

  19. DB server DB server






    !" #





    $

    %%
    & ' !(

    !" #



    )
    !" #



    )


    #





    $

    %%
    & ' !(

    !" #
    !" #
    ID SENDER_ID RECEIVER_ID ...
    1 10 1
    2 20 2
    3 10 1
    4 20 3
    5 10 1
    6 20 4
    7 10 1
    USER_ID MESSAGE_ID
    1 1
    1 3
    1 5
    1 7
    2 2
    3 4
    4 6
    USER_ID MESSAGE_ID
    10 1
    10 3
    10 5
    10 7
    20 2
    20 4
    20 6

    View Slide

  20. replication

    View Slide

  21. MASTER-SLAVE
    scale reads, but not writes

    View Slide

  22. DB master






    !" #





    $

    %%
    & ' !(

    !" #



    )
    !" #



    )
    DB slave






    !" #





    $

    %%
    & ' !(

    !" #



    )
    !" #



    )
    DB slave






    !" #





    $

    %%
    & ' !(

    !" #



    )
    !" #



    )
    ...
    INSERT...
    UPDATE...
    DELETE...
    SELECT...
    SELECT...

    View Slide

  23. MASTER-MASTER
    just for HA, not for scaling

    View Slide

  24. DB master






    !" #





    $

    %%
    & ' !(

    !" #



    )
    !" #



    )
    DB master






    !" #





    $

    %%
    & ' !(

    !" #



    )
    !" #



    )
    INSERT...
    UPDATE...
    DELETE...
    SELECT...

    View Slide

  25. sharding

    View Slide

  26. DB shard





    $

    %%
    & ' !(

    !" #



    )
    !" #



    )
    DB shard






    !" #





    $

    %%
    & ' !(

    !" #



    )
    !" #



    )
    DB shard






    !" #





    $

    %%
    & ' !(

    !" #



    )
    !" #



    )
    INSERT...
    UPDATE...
    DELETE...
    SELECT...
    INSERT...
    UPDATE...
    DELETE...
    SELECT...
    INSERT...
    UPDATE...
    DELETE...
    SELECT...

    View Slide

  27. Sharding i
    HARD
    !

    View Slide

  28. Resharding i
    HARDER
    !

    View Slide

  29. JOINS
    FORGET ABOUT IT
    data could be splitted into many shards

    View Slide

  30. ALTERS
    THINK TWICE ABOUT IT
    altering many shards could be a nice challenge

    View Slide

  31. fault tolerant
    multi-master sharding

    View Slide

  32. SCALE WHEN NECESSARY
    NOT FOR FUN

    View Slide

  33. Alternative
    TOOLS
    ?

    View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. Thanks! Any questions?
    @mariuszgil
    [email protected]

    View Slide