OLAP も PostgreSQL で！
Swarm64 の FPGA によるDB 高速化ソリューション「S64DA」のご紹介
株式会社マクニカ アルティマカンパニー
石田 卓也

アジェンダSwarm64 社のソリューション「S64DA」 の紹介
 S64DA のアーキテクチャ
 TPC-H による効果測定
 サマリ


2

Swarm64 社のソリューション「S64DA」 の紹介

3

Swarm64 の会社紹介
創立 : 2013 年
 本社 : ドイツ, ベルリン （サポート : アメリカ - シアトル）


データベースソフトウェア技術者 x FPGA のデータ処理技術者が在籍
 データ解析とトランザクションをリアルタイムに処理4

Swarm64 のソリューション S64DA の紹介
S64DA : Swarm64 Data Accelerator○

FPGA を使用したデータベース高速化ソリューション
‐ ライセンスモデル：サブスクリプション‐ インテル® PAC インテル® Arria® 10 GX FPGA を使用‐ 回路,ソフトウェア/ランタイムは Swarm64 , インテル® から提供

Database
SoftwareLinux OSS64 DA の Bitstream
S64 Runtime

S64 DAIntel® Driver5

Swarm64 のソリューション S64DA の紹介
S64DA : Swarm64 Data Accelerator○

FPGA を使用したデータベース高速化ソリューション

サーバー + データベースに最適！
電力効率

圧縮/復元処理

低レイテンシFPGAFPGAFPGA

6

Swarm64 のソリューション S64DA の紹介

ソリューションのメリット：データの高速処理○

PostgreSQL ,MariaDB , MySQL でほぼリアルタイムな解析が可能に○複雑なビジネス分析を標準 PostgreSQL に比べ 2~10倍高速化○

INSERT 動作は最大 10 倍高速に処理○

PostgreSQL と完全互換○

既存のテーブルを残したまま、高速化したいところだけ変更○（アクセラレータを意識することなく使用可能）

7

PostgreSQL ベースで高速な ELT 処理と分析処理を実現
Extract
Order Books

Loadステージング
データベース

プロダクション
データベース
Pertinent DataAnalysisTrades
Transform
Scenarios and Strategies
Market Data

入力データ : 注文情報 ( タイムスタンプ/売買情報/量 )、トレード情報 (タイムスタンプ/取引情報 )、マーケット情報 ( タイムスタンプ/感情分析/ニュース)、etc
変換 ( Transform ) : 注文や取引、マーケット情報を適したスキーマに変換
分析処理 ( Analysis ) : シナリオ作成と洞察Swarm64 社 S64DA 特長

柔軟なシステムを構成可能○

FPGA を活用して データを大幅に圧縮○



業務処理はネイティブテーブルで実装し CPU で処理、分析処理は外部テーブルで S64DA テーブルを実装し FPGA で処理など圧縮したデータを FPGA でリアルタイムに伸張するため DB サイズを削減

メインメモリ内の処理及びキャッシュの要件を大幅に削減○

価格が低く、消費電力が少ないサーバー上でも同じレベルの性能を実現
アプリケーション

ワークロードによる実装適用度
PostgreSQL

ネイティブテーブル

S64DAテーブル( 外部テーブル )任意のストレージ

Native Tables

BankingTransactions

S64DA TablesWeb / Mobile
Applications

Real-time
Tracking

Near realtime Analytics

Data
Warehousing

Streaming &Time Series

9S64DA のアーキテクチャ

10

S64DA のアーキテクチャ
Swarm64 DA は PostgreSQL の Extension として使用○

外部テーブルを作成しアクセス時に自動でアクセラレータが呼ばれ処理‐ FDW（外部データラッパ） としてプラグイン‐ ストレージのアクセスを最適化

データ伸長による I/O アクセスの効率化○○



既存と比べデータ量の削減
大きなブロックサイズでアクセス‘Optimized Column’ で高速化○

参照頻度が高いカラムを最適化

PostgreSQL
既存のテーブル‐ 発行したクエリに関連するデータのみアクセス‐ I/O スループットの効率化

S64DA テーブル

アクセラレータ
ストレージへのアクセス

ストレージへのアクセス
11

S64DA のアーキテクチャ
実際に Optimized Column として作成するには？
→ CREATE FOREGIN TABLE 内で Optimized Column としたい
カラムを選択するだけ！
CREATE FOREIGN TABLE my_table (col0 INT, col1 TIMESTAMP NOT NULL,
col2 VARCHAR(30)) SERVER swarm64da_server OPTIONS (optimized_columns'col0, col1');

外部サーバとしてswarm64da_server を選択

Optimized Column として動作させたいカラムを選択

12

FPGA で高速に処理させるには


CREATE FOREIGN TABLE でテーブルの作成が必要○

テーブルを作成する‐ リストア時にスキーマを変更
CREATE TABLE → CREATE FOREIGN TABLE …. SERVER swarm64da_server○

テーブルをコピーする‐ Table ‘X’ の載せ替えの場合
CREATE FOREIGN TABLE …. SERVER swarm64da_server
INSERT INTO X_Swarm (SELECT * FROM X)‐ 最後に ‘X_Swarm’ の名前を ‘X’ に変更（既存 Table ‘X’ はリネームまたは削除）

13

テーブル作成時のクエリ
Native Postgre用 テーブルのクリエイト

S64DA用 テーブルのクリエイト

14

テーブル作成時のクエリNative Postgre用 テーブルのクリエイト



S64DA用 テーブルのクリエイト

・・・・・・・・

CREATE TABLE orders (o_orderkey bigint NOT NULL,
o_custkey int NOT NULL,
o_orderstatus character(1) NOT NULL,
o_totalprice numeric(13,2) NOT NULL,
o_orderdate date NOT NULL,
o_orderpriority character(15) NOT NULL,
o_clerk character(15) NOT NULL,
o_shippriority int NOT NULL,
o_comment character varying(79) NOT NULL);CREATE FOREIGN TABLE orders (o_orderkey bigint NOT NULL,
o_custkey int NOT NULL,
o_orderstatus character(1) NOT NULL,
o_totalprice numeric(13,2) NOT NULL,
o_orderdate date NOT NULL,
o_orderpriority character(15) NOT NULL,
o_clerk character(15) NOT NULL,
o_shippriority int NOT NULL,
o_comment character varying(79) NOT NULL) SERVER swarm64da_server OPTIONS(optimized_columns 'o_orderdate', optimization_level_target '900’);

・・・・

・・・・・

15TPC-H による効果測定

16使用した環境についてパーツCPURAM

型番Xeon Silver 4114 2.2 GHz (Cache13.75 MB) x 2
DDR4-2666 384GB

OSStorage(OS)Storage(DATA)Cent OS 7.4
SAS HDD 1.2TB
NVMe
1.6TB

S64DA version- Native PSQL11( 770GB分 )- S64DA with PSQL11 ( 770GB分 )インテル® PAC インテル® Arria® 10 GX FPGA
v1.6.0

DCP version
Test Data

v1.2
TPC-H @SF300 Power Test

Accelerator Card17

使用した環境についてSF300 でのストレージの使用率＝ S64DA の場合 50% 以上削減
○S64DA : 232 GB ( 770 GB の 32% )‐ FPGA を通してデータが圧縮○Native PostgreSQL : 554 GB ( 770 GB の 76% )‐ インデックス使用分のデータがプラス→ストレージコストの削減

18

TPC-H@SF300 の結果
S64DA vs PSQL11
18:00.0
16:00.0

Time [mm:ss.ms]

14:00.0
12:00.0
10:00.0x43 高速！

S64DA

x1/10 低速

PSQL1108:00.0
06:00.0
04:00.0
02:00.0
00:00.0

14968

133

22

164

1115

110

19

5712

Query
※ 4/18 現時点での弊社での結果となります。

19

Query 14 が速い理由
select100.00 * sum(casewhen p_type like 'PROMO%'
then l_extendedprice * (1 - l_discount)else 0end) / sum(l_extendedprice * (1 - l_discount))
as promo_revenue
fromlineitem,
partwherel_partkey = p_partkey
and l_shipdate >= date '1996-06-01'
and l_shipdate < date '1996-06-01' + interval'1' month;

検索のほとんどがFPGAで行われる。
○

where 句でのカラムの選択/フィル
タリング○

必要なデータのみ FPGA より提供

検索がほとんど FPGA で行われる！
20

Query 22 が遅い理由
selectcntrycode,count(*) as numcust,sum(c_acctbal) as totacctbal
from(selectsubstring(c_phone from 1 for 2) as cntrycode,c_acctbal
fromcustomer
wheresubstring(c_phone from 1 for 2) in('32', '27', '31', '25', '26', '24', '19')
and c_acctbal > (selectavg(c_acctbal)
fromcustomerwherec_acctbal > 0.00
and substring(c_phone from 1 for 2) in('32', '27', '31', '25', '26', '24', '19'))
and not exists (select*fromorders
whereo_custkey = c_custkey)) as custsale
group bycntrycodeorder bycntrycode;

FROMのネストされたサブクエリ○

ネストしたループに必要なすべての中間テーブルが再作成され、常にデータがリロードされる状態に

Native の場合は、インデックスを使って検索をし、結果を保存することが可能

現在メーカではこのクエリを高速化するための解決策を策定中○

計画中でのクエリを書き直しを実装予定

この処理でデータが毎回21

サマリ

22

終わりに

データアナリティクスも PostgreSQL で高速化するために○結果の参照を迅速に行いたい○

何百万行のデータを処理したい→ S64DA は上記課題を解決！
既存の大量のデータをシステム刷新よりもコストを抑えて速く処理
 FPGAの電力効率により、TCE (総消費エネルギー)も削減


23

サマリ
低レイテンシ、高電力効率、ストリーミングの得意な FPGA の使用によりサーバー+データベースにおいて効率的な動作を実現
 データ圧縮によるストレージコストの削減
 柔軟なシステムを構築できる実装形態○同じシステムに業務処理を行う PostgreSQL も構成可能

複雑なビジネス分析を CPU のみと比較して2倍～10倍高速化
 BI ツールへローデータの取り込みを高速化し分析処理を迅速化24

Swarm64 のお問い合わせはこちらまでありがとうございました。

株式会社マクニカ アルティマカンパニー
営業窓口: 平部 真彬 ( hirabe-m@macnica.co.jp )

免責事項
本資料に掲載される性能は弊社が独自に調査したものであり内容を保証するものではありません。製品導入を検討される場合は、他の製品との組み合わせた場合など、お客様の環境により近い形でシステム性能を再評価することをお勧めします。

25