Vertica 9.3のリリース ~変化の風に乗って~

  • hibiki

Vertica 9.3がリリースされました。

変化の風が強く吹いています!!本リリースは9.2からのマイナーバージョンアップになりますが、みなさまからのフィードバックに基づいた多くの新機能および改善点を含んだリリースとなっています。

主な新機能および変更点は以下の通りです。


制約

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

以前のバージョンでは、EXPORT_TABLESなどのDDL文をエクスポートするメタファンクションは、テーブル制約がCREATE文で指定されている場合、ALTER TABLE文で後から追加される場合のいずれの場合でもすべてのテーブル制約をALTER文としてエクスポートしていました。グローバルテンポラリテーブルでは外部キー制約以外のテーブル制約を後から追加できないため問題となります。テンポラリテーブルのエクスポートされたDDL文はそのまま使用できません。本リリースでは、外部キー制約を除くテーブル制約をCREATE文の一部としてエクスポートします。

データ型

External TableにおけるStructの拡張

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

Eon Mode

Subcluster機能の拡張

Subclusterはクラスタ内のノードを小さなグループに分け、ワークロードをそれぞれのグループに分離させることができます。発行されたクエリは、Initiatorノードを含むSubcluster内のノード上でのみ実行されます。以前のバージョンでは、SubclusterはFault Groupの機能を用いて定義していました。今後はSubclusterは完全に独立した機能となり、Fault Groupなどの他の機能と共有する部分はなくなります。
すべてのノードは必ずいずれかのSubclusterに属することになります。以前のバージョンのEon Modeのデータベースを9.3.0にアップグレードすると、Fault GroupはSubclusterに変換されます。いずれのFault Groupにも属していないノードがある場合、Verticaは新しいデフォルトのSubclusterを作成し、そのノードをSubclusterに追加します。新しいデータベースをEon Modeで作成すると、デフォルトのSubclusterが作成され、すべてのノードがそれに追加されます。ノードを追加する際、Subclusterを指定しない限り、すべてデフォルトのSubclusterに追加されます。

Eon Modeデータベースアップグレード時のSubclusterの変換

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

Primary SubclusterとSecondary Subcluster

Subclusterは二つのタイプが提供されます。

  • Primary Subclusterはデータベース内のコアとなるSubclusterで、常に実行されるグループとして認識されます。VerticaはPrimary Subclusterに属するノードに対してのみ、すべてのShardを対象としているか、大半のノードが稼働しているか、を考慮し、データベースが安全に稼働し続けることができるように振る舞います。
  • Secondary Subclusterは一時的なSubclusterです。Secondary Subclusterまたはこれに属しているノードはデータベースの安定稼働に影響を与えることなく起動および停止ができます。VerticaはSecondary Subclusterに属しているノードに対して、すべてのShardを対象としているか、大半のノードが稼働しているか、などを考慮しません。

Eon ModeデータベースのノードにもPrimaryとSecondaryのタイプがあり、属するSubclusterのタイプによって決まります。

Connection Load Balancing Policyの変更

Connection Load BalancingのグループをSubclusterに基づいて定義できます。
Eon Modeデータベースを9.3.0以降にアップグレードする際、Fault Groupに基づいて定義されたLoad Balancingのグループは変換されたSubclusterに基づいて定義されたグループに変換されません。必要に応じてご自身で再定義していただく必要があります。

Subclusterに関わるAdministration Toolsの変更

Administration ToolsのコマンドラインインターフェイスにSubclusterを操作する新しいToolが追加されます。

  • db_add_subcluster:新しいSubclusterを追加します。
  • db_remove_subcluster:Subclusterを削除します。
  • restart_subcluster:Subclusterを起動します。
  • stop_subcluster:Subclusterを停止します。

これらに加え、add_nodeに新しい--subcluster引数が追加されます。ノードを追加する際、属するSubclusterを指定できます。

Subclusterに関わるシステムテーブルの変更

Subclusterに関係して、新しいシステムテーブルの追加や既存システムテーブルの変更があります。

  • V_CATALOG.SUBCLUSTERS:データベースに定義されたSubclusterの一覧およびそれに属するノードを表示します。
  • V_MONITOR.CRITICAL_SUBCLUSTERS:Subclusterの消失またはシャットダウンがデータベースのSafety Shutdownの起因となるものを表示します。
  • NODES:二つのカラムが追加されます。IS_PRIMARYカラムはノードがPrimary Nodeかを表します。SUBCLUSTER_NAMEは属するSubclusterの名称を表します。
  • CLUSTER_LAYOUT:二つのカラムが追加されます。SUBCLUSTER_NAMEカラムとSUBLUSTER_OIDカラムは属するSubclusterを表します。

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

以前のバージョンでは、新しく追加されたノードでクエリの処理を始める前に、Subcluster内の他のノードが持つDepotに基づいてデータを取得し、自身のDepotに格納していました。新たに、Depotのウォームアップをキャンセルしたり、ウォームアップ中にクエリの処理を行うことができるようになります。

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

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

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

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

Depotサイズの上限

データベース作成時にDepotのサイズを指定できます。デフォルトでは、Depotを格納するファイルシステムの60%になります。VerticaはDepotを格納するファイルシステムを他の用途、例えばデータロード中の一時領域、に使用します。Depot以外の用途に十分な領域を確保するため、Depotのサイズの上限が80%となります。80%以上の領域をDepotのサイズに指定するとVerticaはエラーを返します。

新しいS3EXPORTのパラメータ

S3EXPORTファンクションは次のパラメータをサポートします。

  • compression:エクスポートデータを圧縮する際、bzip2を指定できます。
  • enclosed_by:文字列・日付時刻データを囲う文字を指定できます。
  • escaped_by:データをエスケープする際に使用する文字を指定できます。

特定のトランザクションに関するFetch Queueのクリア

CLEAR_FETCH_QUEUEファンクションに任意でトランザクションIDを渡せるようになります。これにより、特定のトランザクションに関するFetch Queueをクリアできます。

Kafka

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

  • 2.0
  • 2.1

その他のバージョンでも動作しますが、詳細は製品ドキュメントのVertica Integration for Apache Kafkaをご参照ください。VerticaはrdkafkaライブラリのVersion 0.11.6を用いてKafkaとやり取りを行います。この変更により、ライブラリのオプションを直接指定している場合は影響がある場合がありますのでご注意ください。

ParquetへのExport

安定性の向上

EXPORT TO PARQUETのメモリ割り当ては個別制御からResource Poolによる制御に変わります。これにより大量のデータをエクスポートする際のメモリ割り当てエラー発生を軽減できます。

プロジェクション

テーブル名とプロジェクション名のより良い相関性

テーブル名をALTER TABLEで変更する際やCREATE TABLE LIKE...INCLUDING PROJECTIONSを用いてテーブルをコピーする際、Verticaは新しいテーブル名をそのプロジェクション名に反映します。

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

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

インフラストラクチャの変更

  • SpreadがSpread 5になります。
  • Python 2のサポート終了にあわせ、Python 3をサポートします。
  • OpenSSLがバージョン1.1.xになります。

サポートプラットフォーム

Pure Storage FlashBlade

Eon Mode on premise向けとしてPure Storage FlashBlade storageをサポートします。

Vertica on the Cloud

新しくサポートするAWSインスタンスタイプ

Vertica 9.3.0では以下のAmazon Web Service (AWS) インスタンスタイプをサポートします。ただし、Ephemeral Storageへの導入はサポートしません。

  • c5.xlarge
  • c5.large


その他の変更点についてはVertica 9.3.x New Features and Changesをご覧ください。是非、Verticaの最新バージョンをお試しください。

Premium Edition(製品版)のダウンロードサイト:https://support.microfocus.com/downloads/swgrp.html

Community Editionのダウンロードサイト:https://www.vertica.com/download/vertica/community-edition

製品ドキュメント:https://www.vertica.com/docs/9.3.x/HTML/index.htm

カテゴリ: