シャーディング・レプリケーションとは(全体像)
どちらも、たくさんのデータや利用者を、複数のサーバーでさばくための分散のしくみだよー。でも役割が違うのー。
- シャーディング … データを分けて複数のサーバーに置く(分割)
- レプリケーション … 同じデータのコピーを複数持つ(複製)
身近にたとえると、引っ越しの荷物。シャーディングは「荷物を何台かのトラックに分けて運ぶ」、レプリケーションは「大事な書類のコピーを何枚か持っておく」感じだよー。
押さえるのは、「分ける(シャーディング)」と「コピーする(レプリケーション)」は別ものということだよー。
詳しく:分割と複製の違いと分け方だけ覚えれば戦える
ここが記事の心臓部。まず2つの違いを見ていこーね。
シャーディングとレプリケーション
| しくみ | 内容 | ねらい |
|---|---|---|
| シャーディング | データを分けて複数サーバーに置く(分割) | たくさんさばく(スケール) |
| レプリケーション | 同じデータのコピーを複数持つ(複製) | 壊れても大丈夫・読み込み分担 |
ここで一番のひっかけが「シャーディングとレプリケーションは同じ」という誤解。シャーディングは「分割」、レプリケーションは「複製」で、役割が違うよー。
次に、シャーディングの分け方。
シャーディングの分け方
| 方式 | 内容 |
|---|---|
| 範囲分散 | IDの範囲で分ける(かたよると混雑=ホットスポット注意) |
| ハッシュ分散 | ハッシュ値で均等に配る(かたよりにくい) |
| コンシステントハッシング | サーバーの追加・削除がしやすい工夫 |
ここで2つめのひっかけが「範囲分散のほうがハッシュ分散より常に良い」という思い込み。ハッシュ分散は、データのかたより(ホットスポット)を防ぎやすいので、状況によってはそちらが向いているよー。
わかりやすく言い換えると
要するに、引っ越しでイメージするとラクだよー。
①シャーディング … 荷物を何台かのトラックに分けて運ぶ(分割)
②レプリケーション … 大事な書類のコピーを何枚か持っておく(複製)
③ハッシュ分散 … 荷物がどこかに集中しないよう、均等に配る
つまり、「シャーディングは分割・レプリケーションは複製」「ハッシュ分散はかたより回避」、この2点が試験の急所なのー。
試験のツボ
🔴 一番出る:シャーディングとレプリケーションの違い
①シャーディングはデータを分けて複数サーバーに置く(分割・スケール)
②レプリケーションは同じデータのコピーを複数持つ(複製・冗長や読み込み分担)
🔴 次に出る:シャーディングの分け方
①範囲分散はIDの範囲で分ける(かたよると混雑=ホットスポット注意)
②ハッシュ分散は均等に配ってかたよりを防ぐ。コンシステントハッシングは増減がしやすい
🟡 押さえると安定:レプリケーションの方式
①マスタ-スレーブ(主が書き込み・従が読み込みを分担)
②整合性とスケール(性能)のトレードオフがある
よくある間違い
①「シャーディングとレプリケーションは同じものである」→ ✗ シャーディングは「分割」、レプリケーションは「複製」。役割が違う。
②「範囲分散のほうがハッシュ分散より常に良い」→ ✗ ハッシュ分散はかたより(ホットスポット)を防ぎやすい。状況による。
③「レプリケーションはデータを分けて置くことである」→ ✗ レプリケーションはコピーを持つこと。分けるのはシャーディング。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(分割と複製の違い)
シャーディングとレプリケーションに関する次の記述のうち、正しいものはどれか。
- シャーディングもレプリケーションも、どちらも画面の色を決める設定だとされている
- シャーディングとレプリケーションはまったく同じもので、違いはないものだとされている
- シャーディングはデータを分けて置く分割、レプリケーションはコピーを持つ複製である
- シャーディングはコピーを持つこと、レプリケーションは分けて置くことだとされている
解答は 3 だよー。
シャーディングはデータを分けて複数サーバーに置く「分割」、レプリケーションは同じデータのコピーを持つ「複製」なのー。荷物を分けるのと、書類をコピーするくらい違うよー。
選択肢1の「色を決める設定」、選択肢2の「まったく同じ」、選択肢4の「分割と複製が逆」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 色を決める設定ではない |
| 2 | ✗ | 役割が違う別もの |
| 3 | ✓ | 分割(シャーディング)と複製(レプリ) |
| 4 | ✗ | 分割と複製が逆 |
オリジナル問題2(シャーディングとは)
シャーディングに関する次の記述のうち、正しいものはどれか。
- シャーディングは音を鳴らして知らせるための機能のことだとされているものである
- シャーディングは大きなデータを複数のサーバーに分けて置く、水平分散のしくみである
- シャーディングはデータを必ず暗号化するための命令のことだとされているものである
- シャーディングは画面を必ず3つに割って表示する設定のことだとされているものである
解答は 2 だよー。
シャーディングは、大きなデータを複数のサーバーに分けて置く(水平分散)しくみなのー。1台に集中させず、たくさんさばけるようにするんだよー。
選択肢1の「音を鳴らす」、選択肢3の「暗号化」、選択肢4の「画面を3つに割る」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 音を鳴らす機能ではない |
| 2 | ✓ | 複数サーバーに分けて置く水平分散 |
| 3 | ✗ | 暗号化の命令ではない |
| 4 | ✗ | 画面を割る設定ではない |
オリジナル問題3(分け方)
シャーディングの分け方に関する次の記述のうち、正しいものはどれか。
- ハッシュ分散はデータを均等に配ってかたより(ホットスポット)を防ぎやすい分け方である
- 範囲分散のほうがハッシュ分散よりいつも必ず良く、かたよりも起きないものだとされている
- シャーディングの分け方は1種類しかなく、選ぶ必要はまったくないものだとされているものだ
- 分け方は画面の明るさで決まるもので、データとは無関係だとされているものである
解答は 1 だよー。
ハッシュ分散は、ハッシュ値でデータを均等に配って、かたより(ホットスポット)を防ぎやすい分け方なのー。範囲分散はかたよると混雑することがあるから、状況で使い分けるよー。
選択肢2の「範囲分散が常に良い」、選択肢3の「1種類しかない」、選択肢4の「明るさで決まる」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | ハッシュ分散は均等でかたより回避 |
| 2 | ✗ | 範囲分散はかたよることがある |
| 3 | ✗ | 複数の分け方がある |
| 4 | ✗ | 明るさで決まるのではない |
まとめ
押さえどころ
- 🔴 分割と複製の違い = シャーディングは分けて置く(分割・スケール)、レプリケーションはコピーを持つ(複製・冗長)。
- 🔴 シャーディングの分け方 = 範囲分散(かたより注意)・ハッシュ分散(均等)・コンシステントハッシング(増減しやすい)。
- 🟡 レプリケーションの方式 = マスタ-スレーブなど。整合性とスケールのトレードオフがある。
次に学ぶ
- NoSQL(4種類・BASE) ── 分散向けのデータベース。シャーディングと相性がよい。
- CAP定理・PACELC ── 分散での一貫性・可用性のトレードオフ。複製の整合性に関わる。
執筆: SikakuQuest編集部