【しゃーでぃんぐ】
シャーディング とは?
💡 巨大なデータを「複数の引き出しに分けて管理」する手法
📌 このページのポイント
シャーディングって何?なんでデータを分けるの?
シャードキーって何?なんで重要なの?
レプリケーションとシャーディングって何が違うの?
シャーディングって何か困ることはないの?
シャードをまたぐ「クロスシャードクエリ」が一番の問題でね、「全ユーザーの合計金額」みたいなクエリはすべてのシャードにアクセスして集計しないといけない。RDBならJOINで簡単にできることが、シャーディングするとアプリ側での集計ロジックが必要になる。あとシャード間のトランザクション(分散トランザクション)も難しくて、2フェーズコミットなどの複雑な仕組みが必要になる。「スケールできるけど複雑さとの戦い」がシャーディングの本質だよ。
📖 おまけ:英語の意味
「Sharding」 = 破片に分ける
💬 Shard(破片・かけら)から来た言葉。ガラスが割れて破片になるように、データを破片に分ける様子から命名された