DEIM Forum 2019 J5-5

OLAP 用列指向データ構造への OLTP 用行指向データの変換方式の検討
塩井 隆円†

横田 治夫†† 東京工業大学 情報理工学院 〒 152–8550 東京都目黒区大岡山 2 丁目 12–1
E-mail: †shioi@de.cs.titech.ac.jp, ††yokota@cs.titech.ac.jp
あらまし 行単位で行う OLTP を効率よく実行するために行指向データが利用されている．しかし，列単位で集計を行う OLAP の実行が非効率であるため，OLTP で更新した情報を素早く OLAP 用の列指向データへ変換することでOLTP と OLAP 双方の性能が向上すると考えられる．また，ディスクベースの列指向データ構造では，データ圧縮効率のために行指向データを蓄積し，まとめて各列単位で格納する必要がある. 本稿では，蓄積した行指向データの更新情報を利用して効率良く列指向のブロックへ変換する方法を検討する．
キーワード 列指向ストレージ,OLTP,OLAP
ディスク I/O の削減が見込まれており，インメモリ DBMS の

1 はじめに近年，OLTP と OLAP を一つの DBMS で実行することでリアルタイムにデータの更新が反映されたデータ解析を実現する

Hybrid Transactional Analytical Processing（HTAP）が注目されている．HTAP アプリケーションでは範囲スキャンを伴うトランザクション処理を高速に実現するために，列指向型ストレージモデルを採用することで同じデータ型を連続して効率良く CPU キャッシュに読み出し，大規模な DRAM やメニーコア等の近年のハードウェア技術の特性を活用したインメモリ

HANA では Redo ログの格納等に利用されている [1]．そこで
本稿では，大量データに対して HTAP を効率良く実行するために，ディスクベース DBMS で SCM を活用したディスク I/Oの削減を行う．ディスクベース DBMS で HTAP を実行するた
めに，OLAP のために列指向 DBMS をベースとし，OLTP では SCM をキャッシュ領域として利用する SCM とディスクのライトバック方式を提案する．

2 関連研究DBMS が利用されている．メモリ上にデータを格納する SAP

オープンソースの列指向型 DBMS では，列指向型ストレーの HANA [1, 4] は，Paypal 等の HTAP アプリケーションで運ジモデルの中でもカラムグループと呼ばれる C-Store や，純粋用されている DBMS であり，残高を集計した結果に基づいてなカラムストアと呼ばれる MonetDB 等が存在している．これ

UPDATE を実行するスキャンの多いクエリが発行されやすい．

らの列指向 DBMS では商用版においても [7, 8]，OLTP 実行

しかし，Google の Mesa [5] では広告に対するクリック数等の際にディスクから各列毎にデータを読み出し，OLAP 性能の更新クエリが大規模化するインメモリ DBMS のみで扱えなのためにソート，圧縮してディスク上に行データを格納する必

いほどのビッグデータに対して，ディスクベース DBMS を用要があるファイルフォーマットとなっている．圧縮効率のため

いて HTAP を実現するために数分単位で大量のデータをバッに，ディスク上に格納するデータの単位となるセグメントとしチで更新し，一貫性を保証した更新と高速な OLAP クエリをて，行単位で実行された OLTP のデータを DRAM 上に保持実行する．ビッグデータに対して出来る限りリアルタイムに更し，各列毎に DRAM 上セグメント内の最大値と最小値の区間新を反映しつつ OLAP を高速に実行するために，予め集計さに該当するディスク上セグメントを読み出して複数セグメントれたマテリアライズドビューに対して更新を反映する方法を提をまとめてソートしてディスク上に格納する方法も提案されて案している．

いる [9]．セグメント同士をまとめてソートすることで，ディディスクベース DBMS では行単位で実行される OLTP をスク上データを読み出す際のセグメントの読み飛ばしをより効効率良く扱うために行指向ストレージを採用するが，一方で，率良く行うことに加え，連続したセグメントをまとめて効率良集計するデータが大量になりやすい OLAP を効率良く実行すく読み出すことが可能となる．

るために列指向ストレージが採用されている．そのため，従来

また，大規模データを処理する MapReduce 等のための分散のディスクベース DBMS ではそれぞれの行指向／列指向ストストレージで利用されやすい列指向ファイルフォーマットとしレージ双方を採用したとしても，OLTP によって更新されたて RCFile，ORCFile や Parquet がある [2,3,6]．カラムグルー

データを行指向ストレージと列変換後に圧縮して各列単位で列プでは，Vertica [7] のように元テーブルの属性列を複数列単位指向ストレージへ反映する必要があり，ディスク I/O の増加等

でプロジェクションと呼ばれるテーブル構造として作ることで，によって HTAP を実現することが難しい．しかし，近年では永プロジェクション単位でバディノードにデータをレプリケート

続化デバイスとして不揮発性メモリ（Storage Class Memory：したデータ分散を行う．データ分散を行う際に行データのタプSCM）を利用してトランザクションのログ処理を行うことでルがノード間に分散してしまう場合，ネットワークをまたがって分散されたタプルを再構成する必要があり，MapReduce 等ではボトルネックとなりやすいとされていた．そのため，RCFile
等の列指向ファイルフォーマットはタプルを分割せず一つのノード内に列指向 DBMS のセグメントに該当する行グループ単位でソートして格納することでカラムグループやカラムストアとは異なる方法を採用している．行グループの中で各列ごとに圧縮する方法を採用することで，行グループのヘッダを先に読み出してクエリの WHERE 条件等に当てはまらなければ，その行グループから次の行グループに読み飛ばすことは可能となっている．

図1 提案手法

従来の列指向ファイルフォーマットでは，一般的に一行単位で実行される OLTP のデータ更新処理に対して，一列単位しつつ，書き戻すブロック数を少なくすることでディスク I/Oの二次記憶の I/O が発生するため非効率と考えられる．また，を削減できるように提案手法の調整を行った（式 1）．

Vertica 等の列指向型 DBMS では行データをメモリ上に蓄積させる間，行データをトランザクション単位でディスク上にファイルとして格納するため，OLTP 実行中のディスク I/O も多く，OLTP と OLAP が同時実行されるような HTAP アプリxp=(2√ 1 exp(− max(LRUrow )2σ2πσ1√ 1 exp(− max(LRUrow )2σ2πσyloge BLOCKdatatype(n + 1)))+2)

BLOCKsizeloge (n + 1)
(1)

ケーションのワークロードを効率良く処理することができない．
し か し ，近 年 で は DRAM と 同 等 の ア ク セ ス 速 度 を 持 つ

式 1 では，SCM で蓄積させた行データをディスク上の各列単MRAM 等の不揮発性メモリ（SCM：Storage Class Memory）位のブロックに書き戻す際の優先度 p をそれぞれ， (x) ブロッの実用化が目前と考えられており，SCM のような最新デバイ

ク内の LRU 値の平均， (y) ブロック内の更新行数，(σ = 0.01)

スを有効活用することで DBMS 性能の向上が可能である．そ，(n = 3000) とし，(σ) は LRU 値が小さくなるほど優先度がこで，本稿では DRAM と同等のアクセス速度で容量の小さい大きくなるように，(n) はブロック内の更新行数が大きくなる

MRAM 等の SCM の利用を想定し，列指向型 DBMS のディスように事前にシミュレーションして調整した（図 2，3）．式 1

ク I/O を削減する方法を提案することで OLTP と OLAP 性能を評価するために，4 節の実験環境でインメモリの SQLite3 を向上を行う．

利用して TPC-C ベンチマークをそれぞれ warehouse4, 14 で120 秒間実行した場合の予備実験を行った結果が図 2，3 となっ3 提案手法た．本稿ではスワップアウトによって SCM に想定した領域が一度に空きやすいにもかかわらず，キャッシュミス数が少なく，SCM の利用を想定して列指向型 DBMS の OLTP ／ OLAP性能向上を図るために，本稿では OLTP 実行中の行データのスワップアウトするブロック数が少なかった式 1 で計算した優
先度順にブロックを書き戻す方法を採用した．

更新箇所をまとめて列のブロック単位で更新を行うことでディスク I/O を削減する方法を提案する．
列指向型 DBMS では，OLTP 実行後の行データを DRAM 上に蓄積させてまとめて各列単位で圧縮して書き戻す必要がある
ため，ディスク上にデータを反映する際のディスク I/O によって OLAP 実行時のディスク I/O が妨げられることで OLAP 性能に影響すると考えた．OLAP は大量データをまとめてメモリ上にロードして集計処理するため，OLAP を効率良く実行できる列指向型 DBMS であっても高頻度に OLTP が同時実行され

図 2 TPCC(warehouse=4) の予備実験結果

る HTAP のようなワークロードでは OLAP 性能に影響する．
そこで，列指向型 DBMS で OLTP 実行のための DRAM 領域の行データを SCM 上に蓄積させ，ディスクへのマージ処理を各列のブロック単位にすることでより小さなディスク I/O でOLTP を実行可能なように設定する（図 1）．
図 1 のようにディスクへ書き戻す列指向のブロックを，LRUをカウントとして設定した値とそのブロックへの更新行数の値を考慮して決定することで，できる限り OLTP 実行時のディスクからの列単位の読み出しによるタプル再構成コストを下げられるように SCM 上の行データへのキャッシュヒットを考慮

図 3 TPCC(warehouse=14) の予備実験結果

4 評価実験
本 評 価 で は ，Amazon Elastic Compute Cloud (AmazonEC2) の r3.4xlarge インスタンス 1（Red Hat Enterprise Linux
Server release 7.1 (Maipo), Intel(R) Xeon(R) CPU E5-2670
v2 at 2.50 GHz processor, EBS (gp2) 500 GB SSD）を用いて実験を行った．比較対象として，列指向型 DBMS である

InfiniDB のオープンソース版（MariaDB Columnstore1.1）を用い，提案手法として SCM を想定して DRAM/SSD 上でそれぞれ SQLite3.8.3 と MariaDB Columnstore1.1 を利用して

図 4 TPC-C と TPC-H query #2 を同時実行中のディスク I/O（MariaDB Columnstore）

TPC-C ベンチマークと TPC-H ベンチマークを同時に実行した．また，SCM は MRAM のような DRAM と同程度のアクセス速度を仮定しているため，SCM と想定した領域は DRAMを利用しているため遅延なしで実験環境を設定した．

TPC-C ベンチマーク (warehouse 4) を実行した結果の 5 回の平均は表 1, 2 に，その間に TPC-H ベンチマーク (SF100) のクエリ#2 を同時実行した際のディスク I/O は図 4, 5 のようになった．
表 1 MariaDB Columnstore
トランザクション

図 5 TPC-C と TPC-H query #2 を同時実行中のディスク I/O（提実行回数txn/s

DELIVERY

70.15NEW ORDER

600.27

ORDER STATUS

74.67

図 4，図 5 では，提案手法の方がディスクへ書き出される

PAYMENT

551.81

データが一度にまとめられているため OLAP のディスク I/OSTOCK LEVEL

56.66

案手法）を妨げないように考えられる．しかし，比較対象であってもOLAP で必要なデータをまとめて読み出す間に OLTP のディ
スク I/O が抑えられるため，OLAP の性能改善はできなかった

表 2 提案手法
トランザクション

実行回数

txn/s

DELIVERY

120.24NEW ORDER

1530.69

ORDER STATUS

147.53

PAYMENT

1324.83

811.11

STOCK LEVELが，OLAP が同時に実行されることで OLTP に影響して OLTPの性能が改善できたと考えている．

5 おわりにOLTP と OLAP を同時実行するアプリケーションが近年注目を集め，HTAP アプリケーションと呼ばれている．集計を

表 1, 2 の結果から提案手法を採用した場合に約 2 倍の OLTP性能が向上したと考えられる．しかし，3 節の提案手法を予備実験で行った際にはインメモリの SQLite を用いた TPCC ベンチマークの実行結果から提案手法の効果をシミュレーションしていたため，実行できたトランザクション数が多く，提案手法の影響が出やすいと考えていた．そのため，表 1, 2 の結果から実行できたトランザクション数自体が少ないことによって本稿の提案手法の効果が確認し難い．また，TPCH ベンチマー
クの平均実行時間の提案手法を評価したところ性能差が見られず，OLAP の性能改善はできなかった．
提案手法の効果を調べるために TPCC と TPCH のクエリ

#2 を同時実行中のディスク I/O を確認した結果は図 4，図 5のようになった．

1：https://aws.amazon.com/ec2/instance-types/?nc1=h_ls

高速に実行できる列指向型 DBMS を利用した場合に，OLTPが非効率とされる列指向データを用いるため修正クエリの多い

TPC-C のようなクエリ処理は遅く，OLAP を同時に実行した場合にも処理速度が遅くなる．
本稿では，列指向型 DBMS に対して OLTP と OLAP 双方の高速化を行うために SCM の利用を想定して行指向データを保持し，SCM に一定量蓄積させることが可能となることで列単位でブロックを読み出して更新する方法を考えた．この際にディスク I/O によるボトルネックを考慮して，ディスク I/Oを削減しつつ SCM 領域を有効活用できるような列指向ブロックのスワップアウト方法を提案した．提案手法は，予備実験結果から一度のスワップアウト処理によって多くの SCM 領域が空き，書き戻されるブロックも少なかったため，評価実験のTPCC の結果を約 2 倍改善できた．

謝辞

この成果は，JSPS 科研費 26280115，18J14722 の助成事業，国立研究開発法人新エネルギー・産業技術総合開発機構（ＮＥＤＯ）の委託業務の結果得られたものです．
文献[1] M. Andrei, C. Lemke, G. Radestock, R. Schulze, C. Thiel,R. Blanco, A. Meghlan, M. Sharique, S. Seifert, S. Vishnoi,
et al. Sap hana adoption of non-volatile memory. Proceedings of the VLDB Endowment, 10(12):1754–1765, 2017.
[2] ApacheSoftwareFoundation.
Documentation ApacheParquet.
https://parquet.apache.org/documentation/latest/.
[3] ApacheSoftwareFoundation.
LanguageManual ORC.
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+
ORC.
[4] F. Färber, S.-K. Cha, J. Primsch, C. Bornhövd, S. Sigg,
and W. Lehner. SAP HANA Database: Data Managementfor Modern Business Applications. ACM SIGMOD Record,40(4):45–51, December 2011.
[5] A. Gupta, F. Yang, J. Govig, A. Kirsch, K. Chan, K. Lai,S. Wu, S. Dhoot, A. Kumar, A. Agiwal, S. Bhansali,
M. Hong, J. Cameron, M. Siddiqi, D. Jones, J. Shute,A. Gubarev, S. Venkataraman, and D. Agrawal. Mesa:
Geo-replicated, near real-time, scalable data warehousing.
In VLDB, 2014.
[6] Y. He, R. Lee, Y. Huai, Z. Shao, N. Jain, X. Zhang, andZ. Xu. Rcfile: A fast and space-eﬃcient data placement
structure in mapreduce-based warehouse systems. In 2011
IEEE 27th International Conference on Data Engineering,pages 1199–1208, April 2011.
[7] A. Lamb, M. Fuller, R. Varadarajan, N. Tran, B. Vandiver,
L. Doshi, and C. Bear. The vertica analytic database: Cstore 7 years later. Proceedings of the VLDB Endowment,
5(12):1790–1801, 2012.
[8] B. Răducanu, P. Boncz, and M. Zukowski. Micro adaptivity
in vectorwise. In Proceedings of the 2013 ACM SIGMODInternational Conference on Management of Data, pages
1231–1242. ACM, June 2013.
[9] A. Skidanov, A. J. Papito, and A. Prout. A column store
engine for real-time streaming analytics. In Data Engineering (ICDE), 2016 IEEE 32nd International Conference on,pages 1287–1297. IEEE, May 2016.