本文へスキップ

シャーディングとは?

しゃーでぃんぐ

シャーディングとは、大量データ複数のサーバーやノードに分割して分散管理する、データベースのスケーリング手法のことです。

シャーディング(Sharding)とは、データベース上の膨大なデータ「シャード(shard)」と呼ばれる複数の小さな単位に水平分割し、それぞれを異なるサーバーやノードに分散して管理するアーキテクチャ手法です。

単一のデータベースサーバーが処理できるデータ量やリクエスト数には限界があります。アクセスが急増したり、データが数億件・数十億件規模になったりすると、レスポンスの遅延やサーバーダウンが生じます。シャーディングはこの問題に対し、負荷を複数ノードに分散することで対処します。

シャーディングのデータ分割方式には主に以下の種類があります。

  • レンジシャーディング — ユーザーIDや日時などの範囲でデータを振り分ける
  • ハッシュシャーディング — キーのハッシュ値を使って均等に振り分ける
  • ディレクトリシャーディング — 別途管理したマッピングテーブルで振り分け先を決める

シャーディングを採用すると読み書きの並列処理が可能になり、スループットが大幅に向上します。一方で、複数シャードにまたがるクロスシャードクエリの複雑化やデータ再分散(リシャーディング)のコストなど、運用上の課題も生じます。MongoDB・Cassandra・MySQLクラスターなど多くのデータベースが組み込みのシャーディング機能を備えています。

使い方・例文

数億件のユーザーデータを持つSNSサービスが、ユーザーIDの末尾の数字に応じてデータを10台のDBサーバーに振り分けて管理する場合、これがシャーディングの典型的な活用例です。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語