Verticaとは

Verticaは並列性に優れたMPPデータベースプラットフォームで、大規模なデータセットに対して高性能かつ高度な分析ワークフローを優先させます。数多くあるセルフマネージドMPPデータプラットフォームと同様に歴史が長く、エンタープライズデータスタックに適合する設計となっています。Verticaの中核技術は、非常に大規模なデータセットで優れた効率とパフォーマンスを発揮する新しいアーキテクチャにあります。

VerticaはR言語との確実な統合や、Hadoopとの間でデータフェデレーションが可能であることから、高度な分析やデータサイエンスのワークフローに最適です。

Verticaをデータベースとして選ぶ理由

優れた費用効果

他のセルフマネージドMPPデータベースとは異なり、Verticaは市販のハードウェアにデプロイして稼働させられるため費用効果の高い柔軟なソリューションです。Verticaでは、新しいノードのプロビジョニングとデータベースのスケーリングが比較的低コストで可能です。​​​​​​​

パフォーマンス

Verticaの列型ストレージは速度と効率を考え、ディスクのI/Oコストを低く抑えて、インデックスとマテリアライズドビューを廃止するために最適化されています。

高度な分析機能

他のセルフマネージドMPPデータベースと同様に、市場で実績のあるVerticaは、成熟し安定したSQL言語を持っています。Verticaが他のセルフマネージドMPPデータベースと異なるのは、地理空間分析や、分散R、機械学習、その他高度なツールキットをネイティブでサポートしている点で、高度分析ツールに関してはVerticaはほとんどのMPPプラットフォームよりも優れています。

Verticaが実際に役立つ事例

オンプレミス環境でのMPPのパフォーマンス

Verticaは、Hadoopと同じように市販のハードウェアにデプロイしてオンプレミスで運用できるため、独自のハードウェアに依存することなく、Verticaのストレージとパフォーマンスを予測可能な形でスムーズに拡張できます。また、可用性が高いことから、ハードウェアの障害に左右されずに継続的にデータを読み込んで分析することができます。

データサイエンス/機械学習のワークフロー

データサイエンスと機械学習のワークフローに大きく依存する組織では、HDFSに直接クエリを実行できるSQLエンジンのVerticaを検討すべきでしょう(Presto、Hive、Sparkも直接クエリ可能)。また、分散Rと統合すれば、アナリストやデータサイエンティストがR言語で大規模なデータセットにクエリを実行できるメリットもあります。

料金に関する考慮事項​​​​​​​

Verticaのライセンス料は、契約期間やプラットフォームに格納された未処理データの量などさまざまな要因によって決まります。個々の仕様に応じた正確な料金の見積もりについては、Micro Focus Verticaチームに直接問い合わせるのがベストです。

また、VerticaのCommunity Editionもあり、これは1TB、3ノードまで無料で利用することができます。

Verticaのアーキテクチャ

Verticaは、列ストレージ(Column storage)、圧縮(Compression)、クラスタリング(Clustering)、継続的パフォーマンス(Continuous performance、可用性)という4つの「C」をコンセプトに設計されています。

列ストレージ

Verticaは、プロジェクションと呼ばれるデータベースオブジェクトのテーブルの列を保存します。プロジェクションは、マテリアライズドビューと同じように動作し、クエリの実行を加速するよう設計されています。つまり、頻繁にアクセスする列がひとつのプロジェクションにグループ化されます。これをさらに推し進めてひとつのプロジェクトで複数の列を事前に結合すれば、結合されたテーブルではクエリのパフォーマンスが劇的に向上します。

列のグループ化は、VerticaのFlexStore™の機能のひとつです。この機能を一言で表すなら「物理設計とデータベースのストレージ、クエリ実行技術の組み合わせ」で、クエリのパフォーマンスを最適化するよう設計されています。また、頻繁に使用するデータをより高速でパフォーマンスの優れたハードウェアに移動することで、そのデータにさらに迅速にアクセスできることもFlexStoreのもうひとつの重要なポイントです。

圧縮

列ストアでは、列を個別のオブジェクトとして保存することによって、データをより効果的に圧縮することができます。というのは、特定の行に存在するデータよりも、特定の列にあるデータの方が類似性が高くなるからです。

Verticaは、圧縮可能な列でLZO圧縮を採用しており、LZOは特に非常に速い速度で解凍できるよう最適化されています。また、整数値の整数パッキングも活用しています。圧縮アルゴリズムとしての整数パッキングの例については、こちらをご覧ください。

クラスタリング

Verticaは、分析MPPデータベースの要である分散型のシェアード・ナッシング・アーキテクチャ上に構築されています。ただし、数多くあるMPP分散データベースとは異なり、Verticaはリーダーノードなしで運用できます。その代わりに、Verticaクラスタ内のすべてのノードがイニシエータノードになることができます。クラスタ内のノードはどれも接続を受け入れ、クエリ実行プランを作成することが可能です。

ロードバランサーに接続しているこのアーキテクチャーでは、Verticaクラスタ内に単一障害点がないため、並列性だけでなく可用性も高まります。

継続的パフォーマンス

Verticaは、デフォルトでデータをデータベースに継続的に自動ロード/トリクルするよう設計されています。 一定の間隔でデータをバッチ単位でアップロードする他のMPPデータベースとは異なり、Verticaでは最小限の管理でデータが継続的にロードされます。このプロセスによりレイテンシも最小限に抑えることができます。

データの種類

Verticaはデータを列形式で保存します。Verticaは、表形式のデータを取り込めるほか、共通イベントフォーマット(CEF)データ、区切りデータ、JSONデータ、正規表現による読み込みで一致したデータなど、フレックステーブルを介して半構造化データにも対応します。VerticaのSQL on Hadoop機能では、テキスト、ORC、Parquetの各形式のデータに対してもクエリを実行できます。

推奨される最大データサイズ

Verticaはペタバイト級のデータベースで、拡張すればペタバイト級のワークロードに対応できます。しかし、ストレージやコンピューティング能力の拡張に伴って、複雑さやコストの面でも検討事項が増えるため注意が必要です。 

Verticaを利用する

新規データの処理

データベースにデータを読み込む前に、あらかじめテーブルを作成し、各テーブルの列ごとにデータ型を指定します。そして、そのテーブルがどう使用されるのか考えながら効果的なプロジェクションを作成し、テーブル全体で列を有効にグループ化します。

メンテナンス、導入すべき事項​​​​​​​

Verticaのハードウェアコンポーネントは完全に管理することができますが、テーブルのアーキテクチャとクエリの最適化については完全な管理はできません。Verticaで想定するパフォーマンスを引き出すには、列のエンコーディング、パーティション分割、インデックス作成、統計を行う必要があります。なお、Teradataデータベースのチューニングには、一般的なMPPのチューニング戦略を応用することができます。

分散R

Verticaでは、Rのスケールが非常に大きなデータセットにまで拡張できるため、ユーザーはR言語でユーザー定義関数(UDF)を作成して、それをVerticaデータベースにロードすることができます。手順についてはこちらのブログを参照してください。

VerticaのSQL on Hadoopエンジン

Verticaプラットフォームには、PrestoやHive、Sparkなど他のSQL on Hadoop言語に匹敵するSQLエンジンが付いているため、Hadoopクラスタのパワーはフルに活用しながら、HadoopデータでもVerticaの安定したSQLクエリ機能を使用することができます。Verticaのパフォーマンスと分析機能を、ネイティブのVertica環境とHadoop環境の両方で、中心となる一ヵ所から利用することが可能です。​​​​​​​

Verticaの豆知識

Verticaの設計者、Michael Stonebraker氏はデータベースについて相当な知識を持っています。A.M.チューリング賞受賞者でもある同氏は、Verticaを設計しただけでなく、データベースPostgresとIngresの開発の先駆者としても活躍しました。現在は、マサチューセッツ工科大学で非常勤教授兼研究者として働いています

アナリティクスを快適に

ビジネスインテリジェンス、ビッグデータ分析、顧客の360°ビュー。
Lookerはお客様のどんなニーズにもお応えします。当社のデータエキスパートにご相談ください。

デモをリクエスト