はじめに

Verticaのマイナーバージョン「9.3」がリリースされましたので、主な新機能と強化された機能の概要をご紹介します。


Vertica 9.3 の主な新機能/機能強化

制約

エクスポートされるテーブル制約に関するDDL文

これまでのバージョンでは、EXPORT_TABLES などの関数を用いて DDL 文を抽出した際、すべてのテーブル制約は ALTER 文としてエクスポートされました。グローバルテンポラリテーブルでは、外部キー制約以外のテーブル制約を後から追加することができないため、手動で DDL 定義を修正する必要がありました。
9.3 では、外部キー制約を除くテーブル制約を CREATE 文の一部としてエクスポートするよう変更されたため、この問題が改善されました。

 ○参考記事:Verticaのオブジェクト定義をエクスポートする方法


プロジェクション

テーブル名とプロジェクション名の相関

テーブル名を ALTER TABLE で変更する際や CREATE TABLE LIKE…INCLUDING PROJECTIONS を用いてテーブルコピーする際、新しいテーブル名がそのプロジェクション名に反映されるようになりました。

 ○参考記事:テーブルのRENAMEコマンド

Live Aggregate Projection で UPDATE と DELETE のサポート

Live Aggregate Projection を持つテーブルで、すべての DML 操作が実行できるようになりました。

 ○参考記事:ライブアグリゲートプロジェクションの作成方法


SQL 関数の強化

新しい S3EXPORT のパラメータ

S3EXPORT ファンクションにて次のパラメータをサポートするようになりました。
パラメータ説明
compressionエクスポートデータを圧縮する際、bzip2を指定できます。
enclosed_by文字列・日付時刻データを囲う文字を指定できます。
escaped_byデータをエスケープする際に使用する文字を指定できます。



サポートされるデータ型

External Table における Struct の拡張

Parquet・ORCファイルはカラムに Complex Data Type を使用することができます。Struct は Complex Data Type の一つであり、属性と値をペアとして格納できます。
以前のバージョンでは、Struct の属性を展開して一つのカラムとして格納することをサポートしていました。これに加え、9.3 では Struct を展開せずに一つのカラムとして定義できるようになり、Parquet・ORC ファイルのオリジナルのデータ形式を維持できるようになりました。


Eonモードに関する機能の強化

サブクラスタ機能の拡張

これまでのバージョンでは、サブクラスタはフォルト・グループの機能を用いて定義していました。
9.3 では、サブクラスタは完全に独立した機能となり、フォルト・グループなど他の機能と共有する部分がなくなりました。

補足:サブクラスタはクラスタ内のノードを小さなグループに分け、ワークロードをそれぞれのグループに分離させることができます。発行されたクエリは、イニシエータノードを含むサブクラスタ内のノード上でのみ実行されます。

Eon Modeデータベースアップグレード時のサブクラスタの変換

Eon Mode データベースを 9.3 にアップグレードすると、すべてのフォルト・グループはサブクラスタに変換されます。
フォルト・グループに属しているノードは、自動的に変換されたサブクラスタに追加されます。フォルト・グループに属していないノードは Vertica が作成するデフォルトのサブクラスタに追加されます。

Primary Subcluster と Secondary Subcluster

サブクラスタは以下の二つのタイプが提供されます。
クラスタタイプ説明
Primary Subclusterデータベース内のコアとなるサブクラスタで、常に実行されるグループとして認識されます。
Vertica は Primary Subcluster に属するノードに対してのみ、すべての Shard を対象としているか、クラスタを構成する過半数のノードが稼働しているか、を考慮し、データベースが安全に稼働し続けることができるように動作します。
Secondary Subcluster一時的なサブクラスタです。Secondary Subcluster またはこれに属しているノードは、データベースの安定稼働に影響を与えることなく、起動/停止ができます。Vertica は Secondary Subcluster に属しているノードに対して、すべての Shard を対象としているか、サブクラスタを構成する過半数のノードが稼働しているか、などを考慮しません。
Eon Mode データベースのノードにも PrimaryとSecondary のタイプがあり、属するサブクラスタのタイプによって決まります。


サブクラスターに対するロードバランス設定

サブクラスターを意識してロードバランスさせることが可能となりました。 サブクラスターに基づいてロードバランス・グループを定義できます。

サブクラスタに関するAdministration Toolsの変更

Administration Toolsのコマンドラインインターフェイスにサブクラスタを操作する新しいコマンドが追加されました。
追加コマンド説明
db_add_subcluster新しいサブクラスタを追加します。
db_remove_subclusterサブクラスタを削除します。
restart_subclusterサブクラスタを起動します。
stop_subclusterサブクラスタを停止します。
add_node --subclusterノードを追加する際、属するサブクラスタを指定します。
(既存の add_node コマンドに対して、引数 --subcluster が追加)


サブクラスタに関するシステムテーブルの変更

サブクラスタに関する、新しいシステムテーブルの追加や既存システムテーブルの変更があります。
システムテーブル名説明
V_CATALOG.SUBCLUSTERSデータベースに定義されたサブクラスタの一覧およびそれに属するノードを表示します。
V_MONITOR.CRITICAL_SUBCLUSTERSサブクラスタの消失、またはシャットダウンがデータベースの Safety Shutdown の原因となるものを表示します。
NODESIS_PRIMARY カラムと SUBCLUSTER_NAME が追加されました。
IS_PRIMARY カラムはノードがプライマリ・ノードかを表します。SUBCLUSTER_NAME は属するサブクラスタの名称を表します。
CLUSTER_LAYOUTSUBCLUSTER_NAME カラムとSUBLUSTER_OIDカラム が追加されました。
それぞれのカラムは属するサブクラスタを表します。


デポへのテーブル/パーティションのピン

9.3 では、SET_DEPOT_PIN_POLICY を使用することで、データベースデポにテーブルまたはパーティションを固定化することができます。
ベストプラクティスとして、DML 操作と検索処理において高頻度で参照されるテーブルとパーティションを固定化することが推奨されます。
なお、新しいシステム・テーブル DEPOT_PIN_POLICIES を参照することで、既存のピンポリシーを確認することが可能です。

クエリ単位での Depot へのデータ取得の制御

Eon Modeのクエリで /*+DEPOT_FETCH*/ ヒントがサポートされ、Depotにクエリ対象のデータがない場合に Communal Storage(S3) からデータを取得する動作を制御できます。

Depot サイズの上限変更

9.3 では、データベース作成時に Depot のサイズを最大で 80% まで指定することが可能となりました。(デフォルトは 60% であり、80% 超の設定をした場合はエラーが返されます)
なお、Depot で指定したファイルシステムのうち、Depot に使用されない残りの領域は、Vertica によってデータロード中の一時領域等、他の用途に利用されます。

Depot ウォームアップのキャンセルとバックグラウンド実行

これまでのバージョンでは、新しくノードを追加した際、クエリの処理を始める前に、サブクラスタ内の他のノードが持つ Depot を参照し、追加したノードの Depot にデータを格納するウォームアップという動作が必要でした。
9.3 では、Depot のウォームアップをキャンセルしたり、ウォームアップ中にクエリの処理を行うことができるようになります。

Depot のモニタリングテーブルの変更

DEPOT_FETCH_QUEUE システムテーブルと DEPOT_FETCHES システムテーブルの PLAN_ID 列が、TRANSACTION_ID 列に変更されます。
この変更により、ノードがファイルを取得した原因のトランザクションを容易に特定できるようになります。


Management Console(MC)機能の強化

TLS 証明書を構成するための新しいオプションの提供

Management Console は、TLS 証明書を構成する拡張機能を提供するようになりました。


その他

オープンソースライブラリのバージョン変更

・Spread が Spread 5 に変更
・OpenSSL がバージョン 1.1.x に変更

Kafkaの動作バージョン

9.3 では次のApache Kafkaのバージョンを用いて動作テストを行っています。
 ・2.0
 ・2.1

他のバージョンでも動作します。詳細については、Vertica Integration for Apache Kafka を参照してください。

稼働環境

サポート開始/終了

・Red Hat Enterprise Linux 6.x、7.x をサポート(細かいバージョンの指定が撤廃)
・CentOS 6.x、7.x をサポート(細かいバージョンの指定が撤廃)
・AWS 環境における MC の導入インスタンスタイプとして、c5.xlarge、c5.large をサポート
・Eon Mode on premise 向けに、Pure Storage FlashBlade storage をサポート
・Python 3 のサポート開始
・Python 2 のサポート終了
・WOS 関連機能が段階的に廃止

システム要件の詳細はこちらの記事でご確認ください。

検証バージョンについて

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

更新履歴

2019/12/11 本記事を公開