はじめに
複数ノード構成時のアーキテクチャについてご紹介します。
Verticaはマスターノードが不要
Verticaでは複数ノード構成時に「マスターノード」という概念が存在しません。このため、全てのノードはクライアントからの接続を受け付けることができます。
Verticaのノードは、イニシエータとエグゼキュータという役割に分かれます。
クラスタを構成するすべてのノードは、イニシエータおよびエグゼキュータのどちらにもなり得ます。
イニシエータ…クライアントからのクエリを受け付けるノード
エグゼキュータ…実際にクエリを処理するノード
これを踏まえ、Verticaが接続要求を受けたときの処理の流れ(図1)をご覧ください。
図1:クライアントからの接続要求のイメージ図
※クリックすると拡大表示できます
<大まかな処理ステップ>
①クライアントからクエリが実行されると、
接続を受け付けたノードがイニシエータとなります。
②各エグゼキュータに処理命令を送ります。
③エグゼキュータは受け取った処理命令を実行し、
結果をイニシエータに返します。
④最後にイニシエータは結果を集計し、
クライアントに結果セットを返します。
他の製品とのMPPアーキテクチャの違い
他の製品ではマスターノードが存在するため、同時実行性が低くパフォーマンス面でボトルネックになる傾向があります。しかしVerticaの場合には、マスターノードが無いため、任意の1ノードに接続後にイニシエーターが処理をコントロールします。
他の製品とのMassively Parallel Processor(MPP)を比較したのが以下の図です。
図2:MPP構成の比較
※クリックすると拡大表示できます
どのノードもエグゼキュータになることができるVerticaでは、特定のノードが処理のボトルネックになりにくいため、他製品と比べて高い同時実行性を誇ります。
参考
以下の記事では、複数ノード構成のメリットについてご紹介しています。合わせてご確認ください。
Verticaノードのクラスタ
https://www.ashisuto.co.jp/cm/analytics-database/node_cluster.html
ロードバランスの概要
https://www.ashisuto.co.jp/cm/analytics-database/load-balance.html
検証バージョンについて
この記事の内容はVertica 9.2で確認しています。
更新履歴
2019/04/14 検証バージョンを9.2に変更
2015/08/18 本記事を公開

