Verticaのオブジェクト階層

Verticaは列指向データベースであるため、データは列ごとに管理されます。各列のデータや統計情報等は「.gt」という拡張子のファイルに格納されており、複数の.gtファイルのまとまりを「コンテナ」と呼びます。そのコンテナが複数集まって「プロジェクション」を構成しています。そして各プロジェクションは対象の「テーブル」に紐づいています。

object-hierarchy


テーブル

SQLを実行する際にFROM句で検索、更新対象として指定します。しかし、Verticaのテーブルは実際にはデータを保持していない論理スキーマであり、SQLがテーブルに対して発行された場合は、オプティマイザが対応するプロジェクションにアクセスし、データの検索等を行います。

プロジェクション

コンテナの集合体であり、1つのプロジェクションには1つのテーブルの全列(あるいは特定の列)のデータが格納されています。Verticaではデータはテーブルではなく対応するプロジェクションに格納されています。

コンテナ

複数の.gtファイルからなるオブジェクト単位です。

.gtファイル

.gtファイルには、実際のデータ、インデックス情報、及び統計情報が格納されています。

なお、VerticaにはOracleの表領域のような考え方はなく、ファイルの格納先はデータディレクトリ内でVertica
が自動で決定するため、ユーザが設定する必要はありません。

検証バージョンについて

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