OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

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

公開日:
更新日:
アーキテクチャ
#WOS
#ROS

はじめに

以下はVerticaのデータ格納に関するアーキテクチャをまとめた図です。この図を踏まえて、Verticaではどのようにしてデータをディスクに格納しているのかご紹介いたします。

※なお、Vertica 9.2までデフォルトで利用可能だったWOSですが、Vertica 9.3からはデフォルトで無効化されています。また、10.0では完全に使用されなくなりました。そのため、9.3以降はWOSを経由せず、ROSに直接データがロードされます。

WOSの使用について(Vertia 9.3以降)
https://www.ashisuto.co.jp/cm/analytics-database/wos-93-later.html

001_hybrid-data-store

図1:ハイブリッドデータ格納

2つのデータ格納領域

Verticaにはデータを格納する領域として、WOSとROSと呼ばれる2つの領域があります。

WOS

Verticaは、データロードを効率化するためにロードしたデータを一旦メモリ上に保持します。このデータを保持するメモリ上の領域のことをWOS(Write Optimized Row-Store)と言います。WOSにデータを格納する際には、未ソート、非圧縮、行指向の状態です。

ROS

WOSに保持されたデータは定期的(デフォルトでは5分置き)にディスク上に転送されます。このディスク上の領域のことをROS(Read Optimized Column-Store)と言います。ROSにデータを格納する際には、ソート済み、圧縮済み、列指向の状態です。

 WOS=メモリ上
  ・・・未ソート、非圧縮、行指向

 ROS=ディスク上
  ・・・ソート済み、圧縮済み、列指向

データ転送と変換の仕組み

WOSからROSに非同期でデータを転送する処理のことをMoveoutと呼びます。

メモリ上のWOSに格納されたデータは、未ソート、非圧縮、行指向の形式で保持されているため、ディスク上のROSに格納する際に、列指向の形式に変換処理を行う必要があります。Moveoutが行われるタイミングで、TUPLE MOVERという機能によって変換処理が行われます。プロジェクションで指定されているソートや圧縮ルールに基づいて処理されます。

ROSの断片化解消

Moveoutされたデータは、既存データとは別のROSコンテナとして断片化した状態でディスクに格納されます。このため、定期的にROSコンテナを統合するための内部処理が実行されます。この内部処理のことをMergeoutと言い、デフォルトでは10分置きに実行されます。

WOS、ROSへのロードの使い分け

WOS、ROSへのロードは状況によって使い分けることができます。
使い分け方については以下の記事をご確認ください。

データロードの基本
https://www.ashisuto.co.jp/cm/analytics-database/dataload_overview.html

検証バージョンについて

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