OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

MoveoutとMergeout

公開日:
更新日:
アーキテクチャ
#Moveout
#Mergeout

Verticaは、WOS(メモリ)またはROS(ディスク)のどちらかを選択してデータを投入できる、ハイブリッド型データ格納方式となっています。本記事では、WOSとROSそれぞれに格納されたデータが、内部的にどのように移動しているか詳しくご紹介します。

※WOS/ROSの内容と、WOS/ROSへのデータロードについては、以下の記事をご参照ください。

  • データロードの基本

 https://www.ashisuto.co.jp/cm/analytics-database/dataload_overview.html

  • Verticaのデータ格納方法(WOSとROS)

 https://www.ashisuto.co.jp/cm/analytics-database/vertica-hybrid-data-store.html

Tuple Moverとは

Touple Moverは、後述のMoveoutおよびMergeoutを実行する機能です。
MoveoutおよびMergeout共に、一定間隔で内部的に実行されているため、通常は意識する必要はありません。

Moveoutとは

WOSに格納されたデータは、未ソート、非圧縮、行指向の形式で保持されているため、ディスク上のROSに格納する際に、列指向の形式に変換処理を行う必要があります。ソートと圧縮は、プロジェクションで指定されているルールに基づいて処理されます。
このように、WOSからROSへ非同期でデータを転送する処理のことをMoveoutと呼び、デフォルトでは5分置きに実行されます。

Moveoutの動作フロー

1. WOSへ新しくデータが投入された場合、下記図の状態になります。

moveout1

2. Touple Moverが5分間隔で、WOS上の行形式データを列形式データへ変換し、ソートおよび圧縮を行います。

moveout2

3. 変換したデータをROSへ移動します。

moveout3

Mergeoutとは

MoveoutされたデータやROSへ直接投入したデータは、既存データとは別のROSコンテナとして断片化した状態でディスクに格納されます。
このROSコンテナの断片化を解消する処理のことをMergeoutと呼びます。デフォルトでは10分置きにチェックされ、断片化解消が必要と判断されるとMergeoutが自動で実行されます。
また、9.2からは新しくDML Commitのタイミングでもチェックが実行されるようになっています。

※Mergeoutの動作タイミング詳細については、以下の記事をご参照ください。

 

  • バージョンごとのMergeout動作

 https://www.ashisuto.co.jp/cm/analytics-database/mergeout_by_version.html

Mergeoutの動作フロー

1. Moveout後やROSへ直接データを投入した後は、下記図の状態になります。

mergeout1

2. Mergeoutが実行されると、Touple MoverがROS上の断片化したデータを統合します。

mergeout2

3. 統合したデータをROSへ移動し、古いROSコンテナ(ファイル)を削除します。

mergeout3

検証バージョンについて

この記事の内容はVertica 9.2で確認しています。

更新履歴

2019/06/21 9.2から追加されたMergeout動作タイミングを追記、検証バージョンを修正
2019/02/28 Mergeoutの実行タイミングを修正
2015/09/11 本記事を公開