増え続けるログデータの管理、集計から解析・機械学習まで対応したデータ管理基盤

PG-Strom usage

PG-Stromは最も広範に利用されているDBシステムの一つ、PostgreSQLの拡張モジュールで、数十TB・数百億件といった規模の大量データの管理、集計、加工といった処理を、GPUやNVME-SSDといった最新のハードウェアの能力を最大限に引き出して高速に実行するためのソフトウェアです。

PG-Stromの各種機能は特に、IoT/M2Mといった極めて大規模のデータを扱う領域のログ処理に重点を置いており、DBシステムへのデータの取り込み、データの集計や加工、および異常検知など機械学習アプリケーションとの連携を、シンプルなシングルノード構成のDBサーバで実現します。

これらの特性は、システムコストの削減や大量データの移動に伴う入出力時間の削減といった分かりやすい効果に加えて、全てのオペレーションが多くのエンジニアにとって使い慣れたPostgreSQLシステムの中で動作するため、これまでのスキルや運用ノウハウを引き継ぐ事が可能となり、アプリケーションの品質改善にも寄与します。

PG-Stromを構成する中核技術

GPUによるSQLの透過的な並列処理

SSD-to-GPU Direct SQL

GPUの特徴

GPUには数千個のプロセッサコアが搭載されており、メモリバスは数百GB/sもの帯域を持っています。これらのハードウェアリソースは並列計算において極めて有効に作用し、CPUと比べて非常に高い価格対性能比を発揮します。 GPUが得意とする並列計算の典型例は行列演算ですが、これは大量の均質なデータに対してそれぞれ同一の演算を行うという特徴があります。SQLにも類似の処理はいくつかあり、例えば全件スキャンにおいて各レコード毎にWHERE句の条件を評価するといった処理が典型です。

PG-Stromの概要

PG-StromはPostgreSQL向けの拡張モジュールで、集計・解析系のSQLワークロードをGPUの並列演算能力を活かして高速化するために開発されました。 CPU集約的なワークロードである、大量レコードのWHERE句、JOIN、GROUP BY処理のGPU実行に対応しており、PostgreSQLのクエリオプティマイザがGPUでの実行を選択した場合、PG-StromはSQLからJIT(Just-in-Time)コンパイルによってGPU命令バイナリを生成し、これをGPU側で非同期・並列実行します。

ストレージの能力を最大限に引き出すSSD-to-GPU Direct SQL

HeteroDB社のユニーク技術、SSD-to-GPU Direct SQLテクノロジは、NVMEストレージ上のPostgreSQLデータブロックを直接GPUへ転送し、CPU/RAMへデータをロードする前にSQLワークロードを処理します。これによりCPUが処理すべきデータ量を小さくする事が可能で、GROUP BYによる集約処理まで行う事ができれば、データサイズが1/1000やそれ以下になるという事も珍しくありません。 通常は"計算のアクセラレータ"として利用される事の多いGPUですが、データ転送パスの途中で『予め不要なレコードを捨てる』ために利用する事で、I/Oが負荷の中心であるSQLワークロードであってもGPUの手助けによって高速化が可能となるのです。

SSD-to-GPU Direct SQL

背景技術 - GPUDirect RDMA

この仕組みの基盤となっているのがNVIDIA GPUDirect RDMAで、GPUデバイスメモリと他のPCIeデバイスとの間でピアツーピアのデータ転送を可能とするものです。 GPUDirect RDMAは元々、Infinibandを介したGPUサーバ間のMPIを高速化するために開発された機能ですが、カスタムLinux kernel moduleを開発すれば、他のPCIeデバイスとGPUとのデータ通信を高速化するためにも利用できます。私たちはこれを、NVME-SSDとGPUとの間のダイレクト読み出しに応用しています。

Apache Arrow形式に対応した列データストア

多くのデータ分析系アプリケーションで利用されているApache Arrow形式の直接読み取りに対応することで、DBシステムへのデータ取り込みステップ自体を不要にし、また列データによる効率的なI/O処理により、ストレージの物理限界以上の実効SQL処理速度を実現します。

SSD-to-GPU Direct SQL

Apache Arrowとは列志向データ形式の一つで、多くのデータ分析アプリケーションが共通で利用するデータ交換用のフォーマットでもあります。そのため、C/C++やPythonなど、多くの言語でArrow形式を扱うためのライブラリが整備されています。

なぜデータのインポートが不要なのか?

PG-StromはPostgreSQLの外部テーブル(Foreign Table)機能を用いて、Arrow形式データファイルをあたかもPostgreSQLテーブルであるかのように読み出し、GPUで処理する事も可能です。

通常、外部からデータを取り込んでDBで集計・解析を行う場合には、インポート処理に相応の時間を要するのが通例でした。しかしPG-StromのArrow_Fdwの場合は、ファイルを外部テーブルとしてマップするだけなので、単純なファイルコピーだけで全て完了です。

なぜI/Oが効率的なのか?

集計・解析系の処理では、テーブルに定義された全ての列を参照することは稀です。通常は一部の列だけを参照すれば十分で、言い換えれば、被参照列以外のデータは「ゴミデータ」であり、I/Oの帯域を無用に圧迫する事になってしまっています。

PostgreSQLのような行データでは被参照列のみをストレージから抽出する事は困難ですが、列データの場合は、列ごとにデータが隣接配置されているため、被参照列のデータだけをストレージから読み出すよう、デバイスを制御するのは容易です。

NVME-oFによるスケーラブルなストレージ

IoT/M2M領域では顕著ですが、日々のログデータを蓄積するシステムでは、必要とするストレージ容量をシステム構築時に正確に見積もる事はなかなか困難な作業です。

ローカルのNVME-SSDをサーバに搭載した場合、システムに搭載可能なストレージの容量はサーバの筐体サイズによって自ずと規定されてしまいますが、高速ネットワーク越しにNVME-SSDを利用するNVME-over-Fabric技術を利用すれば、サーバの筐体サイズに関係なく、必要に応じてストレージを追加する事が可能です。

PG-StromのSSD-to-GPU Direct SQL技術はNVME-oFに対応しており、リモートのNVME-SSDからネットワークカードを介したRDMA(Remote Direct Memory Access)により、GPUへの直接データ転送を行うことが可能です。

SSD-to-GPU Direct SQL

利用シーンのご提案

ログデータ検索&集計 - セキュリティ用途

Log data search

何かセキュリティ事故が発生した時、その影響範囲や原因を特定するための手掛かりとなるのは、ITシステムやネットワーク機器ののログです。 しかし多くの場合、未知の(未対策の)攻撃パターンに対してインデックス設定やパーティショニングなど、一般的なDBチューニングを事前に行うのは現実的ではない一方で、迅速な原因究明や事故レポートの作成が求められます。

PG-StromはGPUの計算能力とNVME-SSDの広帯域をフル活用して、ログデータの検索と、仮説検証のTry&Errorを実行する事ができるようになります。また、現場のエンジニアが使い慣れたPostgreSQLのSQL構文や演算子を利用できるため、即戦力化する事が可能です。

ビジネスインテリジェンス&レポーティング

Business Intelligence

ビジネスインテリジェンス(BI)やレポーティングで多用される集計系SQLワークロードは多数のCPU/GPUコアを使用する並列処理に向いており、ストレージには高いI/Oスループットが要求されます。 PG-Stromはこの種のワークロードに最適化されており、CPU/GPU/SSD全てのハードウェアリソースを駆使する事で高速な集計処理を実現します。

そのため、従来であれば高額なDWH専用機を導入したりクラスタ構成を組んでいたシステムを、シンプルなPostgreSQLベースの構成で代替する事が可能となり、システムの導入と運用に要する費用を削減する事が可能となります。

アノマリー検知

Anomaly Detection

クレジットカードの不正使用や振り込め詐欺など、日々のトランザクションデータの中から犯罪性のある取引を見つけるには、“普段と違う”記録を、なるべく高い頻度で見つけだす必要があります。

PG-Stromを使えば、データベースに格納されたトランザクションデータに対して、直接、統計解析アルゴリズムに基づいた検査を実行する事ができます。これらのロジックはGPUにより高速に計算する事が可能で、また、In-database処理であるため、計算のたびにデータをエクスポートする必要もありません。

製品構成・仕様

ハードウェア構成例

Anomaly Detection

model Supermicro SYS-1019GP-TT Qty
CPU Intel Xeon Gold 6126T(12C,2.6GHz) 1
RAM 16GB (DDR4-2666; ECC) 12
GPU NVIDIA Tesla V100 (5120C, 32GB) 1
SSD Intel DC P4600 (2.0TB; HHHL) 3
HDD 2.0TB (SATA; 7.2krpm; 2.5") 6
  • 認証済みハードウェア構成の一覧はHW-Validation-Listをご確認ください。
  • ソフトウェア要件
    • OS: Red Hat Enterprise Linux 7.x / CentOS 7.x
    • CUDA: CUDA Toolkit 10.1以降
    • DB: PostgreSQL v9.6, v10, v11

サブスクリプション製品

PG-Strom Enterprise Subscription (1GPU, 1年)

  • サブスクリプションはPG-Stromが利用するGPUデバイスの数だけ必要です。
    • 注意: システムに搭載されたGPUデバイスの数ではありません
  • サブスクリプションには以下のものが含まれます
    • 有償モジュールに対するライセンスキー
    • 対象システムに対する技術サポートの提供
    • ソフトウェアアップデートの提供
  • サポート対象ハードウェアはHW-Validation-Listをご覧ください。
  • 価格はオープンプライスです。ページ末尾のフォームよりお問い合わせください。