シャーディングとは?
しゃーでぃんぐ
シャーディングとは、大量のデータを複数のサーバーやノードに分割して分散管理する、データベースのスケーリング手法のことです。
シャーディング(Sharding)とは、データベース上の膨大なデータを「シャード(shard)」と呼ばれる複数の小さな単位に水平分割し、それぞれを異なるサーバーやノードに分散して管理するアーキテクチャ手法です。
単一のデータベースサーバーが処理できるデータ量やリクエスト数には限界があります。アクセスが急増したり、データが数億件・数十億件規模になったりすると、レスポンスの遅延やサーバーダウンが生じます。シャーディングはこの問題に対し、負荷を複数ノードに分散することで対処します。
シャーディングのデータ分割方式には主に以下の種類があります。
- レンジシャーディング — ユーザーIDや日時などの範囲でデータを振り分ける
- ハッシュシャーディング — キーのハッシュ値を使って均等に振り分ける
- ディレクトリシャーディング — 別途管理したマッピングテーブルで振り分け先を決める
シャーディングを採用すると読み書きの並列処理が可能になり、スループットが大幅に向上します。一方で、複数シャードにまたがるクロスシャードクエリの複雑化やデータ再分散(リシャーディング)のコストなど、運用上の課題も生じます。MongoDB・Cassandra・MySQLクラスターなど多くのデータベースが組み込みのシャーディング機能を備えています。
使い方・例文
数億件のユーザーデータを持つSNSサービスが、ユーザーIDの末尾の数字に応じてデータを10台のDBサーバーに振り分けて管理する場合、これがシャーディングの典型的な活用例です。
この用語をシェア
最終更新: