スマートスタイル TECH BLOG

データベース&クラウド技術情報

MariaDB ColumnStore を試してみた

概要

昨今、「ビッグデータ」や「BI」というワードを頻繁に耳にしますね。その影響もあってか、大規模なログデータを扱うのに最適な「カラム指向データベース」が注目を集めています。

MariaDB社が開発・提供する MariaDB ColumnStore (以下、ColumnStore)は、そんなカラム指向データベースの一つです。実際には、XtraDB や Spider のようにストレージエンジンとして実装されており、もちろんオープンソースとして利用が可能です。

この記事では、実際に MariaDB ColumnStore をインストールし、簡易的なベンチマークを実施してみた内容を記載したいと思います。

インストール

Preparing for ColumnStore Installation

上記の公式ページを参考にして、ColumnStore を CentOS 7.2 サーバにインストールします。

・今回は root ユーザでインストールを実施します(一般ユーザでインストールも可能)
・「シングルサーバ構成」「マルチサーバ構成」の2種類ありますが、今回は前者を採用します
→ そのため、上記ページのうち、一部の不要な手順はスキップしています

1. 既存のMariaDB(MySQL)をアンインストールする

既にサーバにMariaDB(MySQL)がインストールされている場合は、事前にアンインストールします。

2. ColumnStoreの関連パッケージをインストール

ColumnStoreを使用する上で必要な関連パッケージをインストールします。

3. RPMパッケージのダウンロード

下記URLから、RPMパッケージをダウンロードします。

4. RPMパッケージのインストール

.tar.gz パッケージを展開して、RPMパッケージをインストールする。

5. postConfigureを実行

ColumnStoreの初期設定は、postConfigureコマンドで行います。
設定項目が表示されるので、設定したい内容を入力していきます。

6. 各コマンドへのエイリアスを作成

columnstoreAlias を実行すると、ColumnStoreで使用する各コマンドへのエイリアスが作成されます。パスを通すイメージです。

ベンチマーク

ColumnStoreの性能を検証するため、簡易的なベンチマークを実施します。

1. テストデータを用意する

下記サイトから、以下のファイルをダウンロードしてColumnStoreサーバに配置します。

Pagecount files for 2016-05

・pagecounts-20160501-000000.gz
・pagecounts-20160502-000000.gz
・pagecounts-20160503-000000.gz
・pagecounts-20160504-000000.gz
・pagecounts-20160505-000000.gz

配置したら .gz ファイルを展開し、中身を確認します。

2. テストデータを加工する

後に使用する cpimport が、半角スペース区切りのファイルに対応していないため、半角スペースをタブに変換します。

3. データベースおよびテーブルを作成する

テストデータをインポートするデータベースとテーブルを作成します。なお、ColumnStoreを利用する場合は、CREATE TABLE 実行時に「engine = columnstore」を指定する必要があります。
(デフォルトのストレージエンジンはInnoDBです)

※ テーブル定義は下記のサイトを参考にしています
https://wikitech.wikimedia.org/wiki/Analytics/Archive/Data/Pagecounts-raw

4. 1ファイル分のインポート/SELECTにかかる時間を計測する

cpimportコマンドを使用して、ColumnStoreにデータ(1ファイル)をインポートするのにかかる時間を計測します。

※ -s オプション : DELIMITERを指定(デフォルトは”|”), 今回はTAB区切りのため”\t”

SELECT count(*) 文を実行し、かかる時間を計測します。

5. 全データをインポートし、SELECTにかかる時間を計測する

残っている4ファイル分のデータをインポートします。

インポートしたテストデータに対して簡単なSELECT文をいくつか実行し、かかる時間を計測します。

※ クエリの実行結果は不要なので、/dev/null に捨てます

6. テーブルデータのサイズを確認します

今回インポートしたテストデータのサイズを確認します。

7. ColumnStoreをアンインストールし、通常のMariaDBをインストールします。

比較対象となるMariaDBをインストールするため、ColumnStoreをアンインストールします。

MariaDBのリポジトリを追加していない場合は、これを追加します。

5月31日時点での最新版である MariaDB 10.1.23 をインストールして、MariaDBを起動します。

8. データベースおよびテーブルを作成する

ColumnStoreと同じデータベース・テーブルを作成します。ただし、こちらはInnoDBストレージエンジンを選択します。

9. 1ファイル分のインポート/SELECTにかかる時間を計測する

LOAD DATA文で1ファイル分のデータをインポートした時に、かかる時間を計測します。

SELECT count(*) 文を実行し、かかる時間を計測します。

10. 全データをインポートし、SELECTにかかる時間を計測する

残っている4ファイル分のデータをインポートします。

インポートしたテストデータに対して簡単なSELECT文をいくつか実行し、かかる時間を計測します。

11. テーブルデータのサイズを確認します

今回インポートしたテストデータのサイズを確認します。

まとめ

上記で実施したベンチマークの結果をまとめると、以下のようになります。

この結果をみると、データのインポートおよびSELECT文の両方で、ColumnStoreの方が良いパフォーマンスを出していることが分かります。また、データサイズもColumnStoreの方が小さいため、テーブルのサイズが大きくなるにつれて、その差も顕著になってくると考えられます。

ただし、今回のベンチマークはデフォルト設定、およびインデックスのないテーブルで行っているため、それらを考慮して再度実施すると結果は変わってくる可能性があります。あくまで参考程度に捉えて頂けると幸いです。


MariaDB

 

Return Top