なお、クラスターを構成する各コンピュータをノードと言います。
データベースの基礎知識 | ||||
---|---|---|---|---|
クラスターの種類
クラスターは目的に応じて、次の 2 種類が存在します。
- HPC (High Performance Computing) クラスター:パフォーマンス向上を目的
- HA (High Availability) クラスター:可用性 (システムの継続稼働) の向上を目的
複数のノード (コンピュータ) に処理を分散できるため、早く処理が終わります。
1台が故障しても他のノード (コンピュータ) で処理を継続できます。
高可用性 (HA) クラスターは、次の2種類の構成が存在します。
アクティブ/パッシブ構成は、パッシブ側の状態によって次の 2 種類があります。
コールドスタンバイにする理由は、待機中のデータベースライセンス費をカットできることです。
その代わり、障害が発生してからデータベースを起動するため、切り替えが遅くなります。
アクティブ/アクティブ構成は、HA クラスターと HPC クラスターの両方の性質を持ちます。
なお、障害発生時は、残ったノードに負荷が集中する点に注意が必要です。
クラスターを実現する技術
クラスターを実現する方法は、主に次の2つが存在します
- シェアードエブリシング (シェアードディスク/共有ディスク)
- シェアードナッシング
- ✅ ノードを追加することで、CPU やメモリを追加可能
- ✅ ストレージが1箇所なので、データの整合性を気にしなくて良い
- ❌ ストレージが追加できないため、ストレージがボトルネック・単一障害点となる
- ❌ 更新したノードと別のノードは、ストレージとキャッシュの整合性が一時的に無くなる
- ❌ アクティブ/アクティブ構成で同じレコードを更新する場合、ロックが必要
- ✅ ストレージも追加可能なので、ストレージがボトルネック・単一障害点にならない
- ✅ ノード間に影響がほとんどないため、ストレージとキャッシュの整合性がある
- ✅ 別々のストレージを持つため、他のノードからのロックの影響を受けない
- ❌ ストレージが複数あるので、データの整合性を気にする必要がある
- ❌ 別のストレージにあるデータを JOIN する場合、時間がかかる
シャーディングには、主に次の3種類が存在します。
- Key Based Sharding
- Range Based Sharding
- Directory Based Sharding
以下の例では、COLUMN1 のハッシュ値に応じて、行を 2 つのシャードに割り当てます。
なお、シャードの割り当てに使うカラムは、シャードキーといいます。
以下の例では、PRICE カラムの値の範囲に応じて、行を 3 つのシャードに割り当てます。
以下の例では、DELIVERY ZONE カラムで、割り当てるシャードを指定しています。
シャードの種類
シャードの種類には、次の 2 つが存在します。
- プライマリーシャード
- レプリカシャード
レプリカシャードは、プライマリーシャードと別のノードに配置します。
これにより、ストレージ障害に耐性がつき、可用性が向上します。
(つまり、プライマリーシャード = HPC クラスター、レプリカシャード = HA クラスターも実現)
上記では、左のストレージが故障しても、シャード1、2のデータが残っています。
最後に
関連記事
データベースの基礎知識 | ||||
---|---|---|---|---|