Verticaのオブジェクト階層

Verticaは列指向データベースであるため、データは列ごとに管理されます。各列のデータは「.fdb」という拡張子のデータファイルと、「.pidx」という拡張子のインデックスファイルで構成されており、これらの組み合わせを「コンテナ」と呼びます。そのコンテナが複数集まって「プロジェクション」を構成しています。そして各プロジェクションは対象の「テーブル」に紐づいています。

object-hierarchy


テーブル

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

プロジェクション

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

コンテナ

.fdbファイル、.pidxファイルの組み合わせからなるオブジェクト単位です。

.fdbファイル、.pidxファイル

.fdbファイルには、実際のデータが格納されており、各.fdbファイルのインデックス/統計情報を、対応する.pidxファイルで管理しています。

検証バージョンについて

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