猫でもわかるWebプログラミング

試行錯誤しながらエンジニア(プログラマー)として働く猫のブログ。技術的な話や、働き方の話、読書録とか、試行錯誤している日常の話。

データベースの「シャーディング」とは

シャーディングの概要

シャーディングとは、データベースの負荷分散の仕組みの一つです。

データベースのデータを、ある法則により完全に2つに分けます。

具体例

ツイートのデータベースを考えます。データベースを

  • ユーザーA, B 用のデータベース
  • ユーザーC, D 用のデータベース

と分けます。

f:id:yoshiki_utakata:20200415114306j:plain

メリットとデメリット

ユーザーAのページを表示する時には、左のデータベースを見ればよく、 ユーザーCのページを表示する時には、右のデータベースを見れば良いので、DBの負荷が半分になります。(メリット)

ただし、ツイート検索の時は両方のDBを検索する必要があります。(デメリット)

完全に負荷が半分になるわけではないですが、うまく分割することで負荷を半分に近づけることができます。

レプリケーションと異なり、更新クエリの負荷も分散などのメリットがあります。