目次
はじめに
Verticaには、データベースのデータを冗長化させるための機能があります。当記事では、この冗長化機能を提供する「Buddy Projection」と「K-safety」についてご紹介します。
Buddy Projection(バディ・プロジェクション)とは
Verticaには、Buddy Projection(バディ・プロジェクション)と呼ばれるプロジェクションがあります。Buddy Projectionとは、セグメンテーション化(分散化)されたプロジェクションのレプリカのことです。
以下にBuddy Projectionを図解します。
説明の途中に「K-Safety」が出てきますが、「K-Safety」については後述します。
この図では、セグメンテーション化(分散化)された状態を示しています。
3台のノードにセグメンテーション化された1つのプロジェクション(水色の帯)があります。そのプロジェクションの中にソースデータがAとBとCに分割され、各ノードに分散配置された状態を示しています。
データの冗長化はされていません。
次の図では、K-Safetyを1に指定した場合のBuddy Projectionの状態を示しています。
上図で示した分散化されたプロジェクション(水色の帯)の状態は同じですが、レプリカとしてBuddy Projection(ピンクの帯)が存在する点が異なります。
下図のように、ノード1で持っているデータAの複製(データA#)をノード2に持たせます。同様に、ノード2で持っているデータBの複製(データB#)をノード3に持たせます。
このようにして、ノード1が障害でダウンしてしまっても、データAの複製をノード2が持っている事からデータの整合性を保つ事ができます。
K-Safetyとは
K-Safetyとは、データベースクラスタ内のフォールトトレランスの尺度で、数値で指定します。K-Safetyの値は、データベースクラスタ内に存在するデータベース内のデータのレプリカ数を示し、0、1、2が指定できます。これらのレプリカは、ノード障害が発生してもデータの整合性を確保できるように他のノードが引き継ぎます。
もし、K-Safetyの値よりも多くのノード数で障害が発生すると、データベース内のデータの一部が利用できなくなる可能性があります。その場合、データベースは安全ではないとみなされ、自動的にシャットダウンされます。
例えば、Verticaクラスタが3台のノードで構成されていて、K-Safetyが1に設定されている場合は、
1台のノード障害までは耐えられます。2台以上のノード障害が発生した場合は、自動的にシャットダウンされます。
K-SafetyとVerticaクラスタノード数の関係
K-Safetyに必要なVerticaクラスタの最小ノード数を以下に記載します。K-Safetyを1以上に設定するには、少なくとも3台のノードで構成する必要があります。
また、Verticaクラスタが1台構成の場合にはK-Safetyは0(ゼロ)しか設定する事ができず、データに冗長性を持たせる事ができません。
K-Safety | レプリカ数 | 最小ノード数 |
---|---|---|
0 | 0個 | 1台 |
1 | 1個 | 3台 |
2 | 2個 | 5台 |
このように、K-Safetyで指定した数だけBuddy Projection(レプリカ)が作成され、データの冗長性を持たせる事ができます。