sharding
シャーディング / シャーディングする
名詞他動詞
過去形: sharded過去分詞: sharded現在分詞: sharding
shardingは、主に大規模なデータベースのパフォーマンスを最適化するための水平分割手法を指します。単一のサーバーでは処理しきれない膨大なデータを、複数のサーバーに分散して保持させることで、読み書きの負荷を軽減し、システムの拡張性を確保することが目的です。
パーティショニングとの違いshardingは、広義にはpartitioning(パーティショニング)の一種ですが、重要な違いはその物理的な配置にあります。partitioningが単一のサーバー内でデータを論理的に分けることを指す場合があるのに対し、shardingは必ずデータを物理的に異なる複数のサーバー(シャード)に分散させます。これにより、単一サーバーのハードウェア限界を超えたスケーリングが可能になります。
実装上の注意点とトレードオフshardingを導入することで処理速度は向上しますが、システムの複雑性は増大します。特に以下のような課題が発生しやすくなります。
データの分散先を決定するシャーディングキーの選択を誤ると、特定のサーバーに負荷が集中するデータスキューが発生します。
複数のシャードにまたがるデータの結合(ジョイン)操作が非常に困難になり、アプリケーション側のロジックで制御する必要があります。
シャードの数を後から変更するリシャーディング作業には、高度な運用コストとリスクが伴います。
意味
名詞シャーディング
単一の巨大なデータベースを、シャードと呼ばれるより小さく管理しやすい断片に分割し、パフォーマンスと拡張性を向上させるために複数のサーバーに分散させるプロセス
関連語
partitioningfragmentationconsolidationunificationcentralizationdatabaseclusternodeserverpartitionsharddistributionscalabilitythroughputlatencyloadreplicationredundancyparallelismconcurrencystorageindexqueryhashkeymappingroutingmetadatanetworkbandwidthperformanceoptimizationarchitectureinfrastructurecloudvirtualizationdistributed systembig datavolumecapacityfragmentslicesegmentsplitdivisionavailabilityreliabilityconsistencysynchronizationtransactioncommitrollbackoverheadbottleneckrangemodulobackendmiddlewareorchestrationdeploymentprovisioningload balancerfailoverbackuprecoverymemorycache