sharding
shardingは、主に大規模なデータベースのパフォーマンスを最適化するための水平分割手法を指します。単一のサーバーでは処理しきれない膨大なデータを、複数のサーバーに分散して保持させることで、読み書きの負荷を軽減し、システムの拡張性を確保することが目的です。
パーティショニングとの違いshardingは、広義にはpartitioning(パーティショニング)の一種ですが、重要な違いはその物理的な配置にあります。partitioningが単一のサーバー内でデータを論理的に分けることを指す場合があるのに対し、shardingは必ずデータを物理的に異なる複数のサーバー(シャード)に分散させます。これにより、単一サーバーのハードウェア限界を超えたスケーリングが可能になります。
実装上の注意点とトレードオフshardingを導入することで処理速度は向上しますが、システムの複雑性は増大します。特に以下のような課題が発生しやすくなります。
データの分散先を決定するシャーディングキーの選択を誤ると、特定のサーバーに負荷が集中するデータスキューが発生します。
複数のシャードにまたがるデータの結合(ジョイン)操作が非常に困難になり、アプリケーション側のロジックで制御する必要があります。
シャードの数を後から変更するリシャーディング作業には、高度な運用コストとリスクが伴います。
意味
単一の巨大なデータベースを、シャードと呼ばれるより小さく管理しやすい断片に分割し、パフォーマンスと拡張性を向上させるために複数のサーバーに分散させるプロセス
The engineering team implemented sharding to handle the massive increase in user traffic.
エンジニアリングチームは、ユーザートラフィックの激増に対処するためにシャーディングを実装した。
データセットを小さな断片に分割し、データベースサーバーのクラスター全体に負荷を分散させること
By sharding the database, the company reduced latency for global users.
データベースをシャーディングすることで、企業はグローバルユーザーのレイテンシを削減した。