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

本業Webエンジニア。副業でもWebエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

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

シャーディングの概要

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

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

具体例

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

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

と分けます。

f:id:yoshiki_utakata:20200415114306j:plain

メリットとデメリット

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

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

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

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