ビッグデータ分析をSQLで簡単に!~IoTを支える超高速分析用DB Vertica~ (1/3):EnterpriseZine(エンタープライズジン)
Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

ビッグデータ分析をSQLで簡単に!~IoTを支える超高速分析用DB Vertica~

2017/08/03 06:00

 「Vertica」は情報系システムにおいて大量データの「超高速」集計・分析処理に強みを持つ列指向データベースとして、ワールドワイドで3,500社以上のお客様に利用いただいているデータベースソフトウェアです。「Vertica」には単なるデータベースとは一線を画すビッグデータ分析プラットフォームとして、独自の分析関数や機械学習といった豊富な分析機能が実装されています。本稿では、このような「Vertica」のビッグデータ分析機能の概要や活用法をまとめてご紹介します。

はじめに

 Verticaの強みは複雑なチューニングを必要とせず、シンプルな運用で高速なパフォーマンスを実現できるという点にあります。

 例えば、あるビル空調サービス会社では、データ量や分析処理量の大幅な増加に伴い、大量データの処理性能に大きな課題を抱えていましたが、Verticaを採用することで従来システムの10倍の処理効率を実現することに成功しました。また同社では、DWH(Data Warehouse)用途だけでなく、空調の各センサーデータをニア・リアルタイムにロードし、空調システムの不具合をリアルタイムで予測するIoT基盤としてもVerticaを利用しています。

 このようにVerticaは企業データのDWHとしての利用はもちろんのこと、機械学習アルゴリズムの実装や半構造化データをそのまま取り込むFlex Table機能等により、大量データの分析プラットフォームとしても普及しています。

 本稿では、通常のデータベースから一歩進んだ、Verticaのビッグデータ分析機能をご紹介します(図1)。

 Verticaの基礎を知りたい方は、アシストが開設している「Vertica技術情報サイト」の以下の記事をご参照ください。

 ・Verticaとは

図1:Verticaのビッグデータ機能一覧
図1:Verticaのビッグデータ機能一覧

 本記事では次の機能について、ご紹介します。

  •  Flex Table(半構造化データ活用)
  •  Hadoop/Spark連携
  •  Kafka連携(リアルタイムデータ連携)
  •  SQL Analytics(ログ分析用のSQL拡張関数)
  •  Machine Learning(機械学習)

半構造化データをデータベースへ取り込む

 Apache Hadoop(以降、Hadoop)やApache Spark(以降、Spark)に格納されるログデータや、IoTデバイスなどからのセンサーデータは、半構造化データです。通常これらのデータをデータベースに取り込むためには事前にCSVなどの構造化データに変換する必要がありますが、Verticaでは半構造化データをそのまま取り込むFlex Tableという便利な機能が提供されています。この機能を利用することにより、前処理無くVerticaに直接データロードできるため運用や開発の負荷を大幅に軽減することができます。

 使い方はとても簡単で、Flex Tableを作成し、COPYコマンドでJSONやAVRO、CEFといった半構造化データをロードするだけです(図2)。

図2:半構造化データをFlex Tableに取り込むイメージ
図2:半構造化データをFlex Tableに取り込むイメージ

 たとえばJSON形式のファイルの場合、key-value型でデータが格納されているため、Verticaはキーを列名、バリューをテーブルデータとして自動的に認識し、データをロードします。この時、事前にテーブルの列名などの定義は不要です。また、データ型は文字列型だけでなく、BOOLEAN、INTEGER、FLOAT、TIMESTAMP、DATEなどにも対応しています。データをロードしたあとは、通常のSQLでデータ操作を行うことが可能です。Flex Tableの基本的な利用方法については、「Vertica技術情報サイト」の以下の記事をご参照ください。

 ・Flex Table(基本編)

Hadoopと連携し、オンライン系分析処理を高速化する

 ビッグデータ基盤というと、Hadoopを思い浮かべる方が多いのではないでしょうか。実際にHadoopを大量データのバッチ処理やデータレイク(大量データの置場)として活用されている方も多いと思います。しかし、Hadoopはオンライン系の高速分析処理に課題があるため、HadoopのフロントにVerticaを配置し、高速分析処理はVerticaに任せることでこの課題を払拭することができます。

 HadoopとVerticaの連携には以下の3つの方法があります。

 ① HDFS上のデータをVerticaにロードする
 ② HDFS上のデータを外部表としてアクセスする
 ③ Hadoopのテーブル定義を利用し、Hiveを通じてHDFS上のデータにアクセスする

 これらの3つを図解したものが(図3)です。

図3:HadoopとVerticaの連携
図3:HadoopとVerticaの連携

 最もシンプルで高速なパフォーマンスを得られるのは①の方法です。(図4)のように、データロード用のコマンド(COPYコマンド)でHDFS上のデータをVertica内に簡単に取り込むことができます。Hadoopで事前バッチ処理したデータをVerticaに取り込んで使うような場合に非常に便利です。

 図4:Hadoop上のデータをVerticaにインポート
COPY testTable SOURCE dfs(url='http://hadoop:50070/webhdfs/v1/test.txt',username='hadoopUser');

 一方、②と③の方法では、Verticaに実際のデータをロードするのではなく、Verticaを介してHDFS上のデータを参照します。Verticaにデータを取り込む①の方法と比べると処理性能は劣りますが、Verticaにアクセスするのと同様にSQLで簡単にHDFS上のデータにアクセスできるメリットがあります。

 また、Verticaはデータベースに取り込むデータ量に応じてライセンス費用が決まりますが、②と③の方法はライセンスの課金対象にならないというコスト的なメリットもあります。

 

※この続きは、会員の方のみお読みいただけます(登録無料)。


著者プロフィール

  • 河西 大樹(カワニシ ダイキ)

     株式会社アシスト データベース技術本部 技術統括部  アシスト入社後、「Oracle Database」の構築や教育、サポート業務を担当。2015年より「Vertica」担当となり、製品検証や執筆を担当。

バックナンバー

連載:大量データを高速に分析できる列指向データベース、Vericaとは
All contents copyright © 2007-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5