はじめに

Verticaは、テーブルやビューなど、一般的なオブジェクト以外にも、様々なオブジェクトを利用できます。他のデータベースと大きく違うところは、プロジェクションという、Vertica独自のオブジェクトが存在することです。今回は、Verticaを構成しているオブジェクトには、どのようなものがあるか、ご紹介します。

Verticaのオブジェクト構造

Verticaのオブジェクトは、図に示すような構造になっています。

Verticaのオブジェクト構造
以下、Verticaで利用できるオブジェクトとその特徴について解説します。
No名称説明
1データベース一番大きなオブジェクトの単位です。データベースは複数作成することもできますが、起動できるデータベースはクラスタ全体で1つのみです。
2スキーマテーブル等を管理する単位です。スキーマを複数作成することで、ユーザごとに参照できるスキーマを限定してセキュリティレベルを高めたり、アプリケーションごとにスキーマを分けて管理することができます。
3テーブルVerticaのテーブルは、実際にはデータを保持していない論理スキーマです。SQLがテーブルに対して発行された場合は、オプティマイザが対応するプロジェクションにアクセスし、データの検索等を行います。
4ビューテーブルの特定のカラムや指定した条件に合致するレコードなどを取り出した仮想のテーブルです。ユーザに必要最小限のカラムやレコードのみにアクセスさせる事ができたり、結合条件を指定しなくても既に結合された表にアクセスすることができます。Verticaのビューは、読み取り専用のみで、更新可能なビューはありません。
5プロジェクションVertica独自のオブジェクトです。自動でテーブルデータを最適な形でソート、圧縮して保持しており、Verticaの検索パフォーマンスを向上させます。1つのプロジェクションには1つのテーブルの全列(あるいは特定の列)のデータが格納されています。
6外部プロシージャ1つのSQL文では記述することができない複雑な処理を実装することができます。Verticaのプロシージャーは、コーディング自体はシェルで行い、そのシェルを呼出して利用します。
7ユーザ定義関数事前に定義されている関数以外で、独自に関数を作成する場合に利用します。
8ライブラリユーザ定義関数で利用するライブリです。ライブリを作成する時に利用できるプログラミング言語は「C++/Java/R」です。
9シーケンスレコードに一意の番号を振りたい場合、その番号を自動生成してくれます。
10リソースプール各処理で利用可能なメモリサイズやCPUの優先度を設定することができ、クエリの同時実行や優先順位を制御することができます。
11ユーザデータベースで利用するユーザです。ユーザを作成することで、ユーザごとに参照可能なスキーマやテーブルを分けたり、特定のユーザにのみシステムのリソースを優先的に割り当てたりすることができます。データベース作成時には、スーパーユーザとしてdbadminユーザが自動的に作成されます。
12プロファイルユーザに対して、パスワードの制限をかけるために利用します。パスワードで利用可能な文字や有効期間などのルールを指定することができます。
13ロール権限を纏めて一つにしたものです。権限のルールを見直す際などは、ロールを変更するだけでそのロールが割り当てられている全ユーザに変更が反映されるため、管理がしやすくなります。
14ストレージロケーション新しく追加したディスクをVerticaのデータ領域や一時領域として使わせる場合やユーザ単位に特定のディレクトリに対して、読み取り/書き込みの制限を指定する場合に利用します。


参考情報

データベースオブジェクトの概要
http://vertica-tech.ashisuto.co.jp/dbobjects_overview/

Verticaのオブジェクト階層
http://vertica-tech.ashisuto.co.jp/object-hierarchy/

検証バージョンについて

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