はじめに
MariaDB の列指向データベース ColumnStore は2018年末にデータ分析プラットフォームのリーダーである Tableau Software から認証を受けております。
Fastest Growing Open Source Database MariaDB Partners With Global Visual Analytics Leader Tableau
今回は Tableau Desktop をMariaDB ColumnStore に接続して簡単なデータ分析を行ってみます。
事前準備
MariaDB ColumnStore コンテナの実行
今回は ColumnStore の Docker コンテナを利用します。なお,Docker イメージは2018年10月より MariaDB Corporationでビルドされたイメージが利用可能となっております。
New Certified Docker Images + Kubernetes Scripts Simplify MariaDB Cloud Deployments
以前から利用されている MariaDB Server の Docker イメージレポジトリ(下記URL)では,MariaDB Serverしか提供されていませんでした。
https://hub.docker.com/_/mariadb/
これに対して,新たに MariaDB Corporation から提供されているDockerイメージは以下のレポジトリにあり,MariaDB Serverだけでなく,MariaDB ColumnStore, MaxScale も提供されています。
https://hub.docker.com/r/mariadb/
ColumnStore コンテナを利用するには,Docker が利用可能な環境で mariadb/columnstore を実行します。
1 2 3 4 5 |
$ docker run -d --name mcs -p 3306:3306 mariadb/columnstore $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1d702a65f768 mariadb/columnstore "docker-entrypoint..." 7 minutes ago Up 7 minutes 0.0.0.0:3306->3306/tcp mcs |
コンテナ上で bash を実行し,続いて mcsmysql (MariaDB monitor) を実行します。
1 2 3 4 5 6 7 8 9 10 11 |
$ docker exec -it mcs bash [root@ca422772f3cb /]# mcsmysql test Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 16 Server version: 10.2.17-MariaDB-log Columnstore 1.1.6-1 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [test]> |
次にテスト用のテーブルを test データベース上に作成します。
1 2 |
MariaDB [test]> create table dept (dept_id int, name varchar(30)) engine=columnstore; MariaDB [test]> create table emp (emp_id int, dept_id int, name varchar(30), salary int, hire_date date) engine=columnstore; |
mcsmysql をいったん終了し,サンプルデータを作成します。
1 2 3 4 5 6 7 8 |
[root@ca422772f3cb ~]# cat > emp.tbl 1|1|Joe|1000|2014-05-31 2|2|Bob|2000|2016-01-04 3|1|Kate|1500|2013-12-10 4|2|Bill|1800|2015-04-01 [root@ca422772f3cb ~]# cat > dept.tbl 1|Engineering 2|Sales |
cpimport を用いてデータをインポートします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[root@ca422772f3cb ~]# LANG=C cpimport test emp emp.tbl Locale is : C Using table OID 3015 as the default JOB ID Input file(s) will be read from : /root Job description file : /usr/local/mariadb/columnstore/data/bulk/tmpjob/3015_D20181207_T091604_S136109_Job_3015.xml Log file for this job: /usr/local/mariadb/columnstore/data/bulk/log/Job_3015.log 2018-12-07 09:16:04 (8301) INFO : successfully loaded job file /usr/local/mariadb/columnstore/data/bulk/tmpjob/3015_D20181207_T091604_S136109_Job_3015.xml 2018-12-07 09:16:04 (8301) INFO : Job file loaded, run time for this step : 0.133274 seconds 2018-12-07 09:16:04 (8301) INFO : PreProcessing check starts 2018-12-07 09:16:04 (8301) INFO : input data file /root/emp.tbl 2018-12-07 09:16:04 (8301) INFO : PreProcessing check completed 2018-12-07 09:16:04 (8301) INFO : preProcess completed, run time for this step : 0.207793 seconds 2018-12-07 09:16:04 (8301) INFO : No of Read Threads Spawned = 1 2018-12-07 09:16:04 (8301) INFO : No of Parse Threads Spawned = 3 2018-12-07 09:16:04 (8301) INFO : For table test.emp: 4 rows processed and 4 rows inserted. 2018-12-07 09:16:05 (8301) INFO : Bulk load completed, total run time : 1.34579 seconds [root@ca422772f3cb ~]# cpimport test dept dept.tbl Locale is : C Using table OID 3011 as the default JOB ID Input file(s) will be read from : /root Job description file : /usr/local/mariadb/columnstore/data/bulk/tmpjob/3011_D20181207_T091612_S631409_Job_3011.xml Log file for this job: /usr/local/mariadb/columnstore/data/bulk/log/Job_3011.log 2018-12-07 09:16:12 (8374) INFO : successfully loaded job file /usr/local/mariadb/columnstore/data/bulk/tmpjob/3011_D20181207_T091612_S631409_Job_3011.xml 2018-12-07 09:16:12 (8374) INFO : Job file loaded, run time for this step : 0.0600078 seconds 2018-12-07 09:16:12 (8374) INFO : PreProcessing check starts 2018-12-07 09:16:12 (8374) INFO : input data file /root/dept.tbl 2018-12-07 09:16:12 (8374) INFO : PreProcessing check completed 2018-12-07 09:16:12 (8374) INFO : preProcess completed, run time for this step : 0.0399799 seconds 2018-12-07 09:16:12 (8374) INFO : No of Read Threads Spawned = 1 2018-12-07 09:16:12 (8374) INFO : No of Parse Threads Spawned = 3 2018-12-07 09:16:12 (8374) INFO : For table test.dept: 2 rows processed and 2 rows inserted. 2018-12-07 09:16:14 (8374) INFO : Bulk load completed, total run time : 1.59498 seconds |
念のためデータを確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
[root@ca422772f3cb ~]# mcsmysql test MariaDB [test]> select * from emp; +--------+---------+------+--------+------------+ | emp_id | dept_id | name | salary | hire_date | +--------+---------+------+--------+------------+ | 1 | 1 | Joe | 1000 | 2014-05-31 | | 2 | 2 | Bob | 2000 | 2016-01-04 | | 3 | 1 | Kate | 1500 | 2013-12-10 | | 4 | 2 | Bill | 1800 | 2015-04-01 | +--------+---------+------+--------+------------+ 4 rows in set (0.12 sec) MariaDB [test]> select * from dept; +---------+-------------+ | dept_id | name | +---------+-------------+ | 1 | Engineering | | 2 | Sales | +---------+-------------+ 2 rows in set (0.03 sec) SELECT emp.name name, dept.name dept_name, emp.salary, emp.hire_date FROM emp JOIN dept on emp.dept_id = dept.dept_id; +------+-------------+--------+------------+ | name | dept_name | salary | hire_date | +------+-------------+--------+------------+ | Joe | Engineering | 1000 | 2014-05-31 | | Bob | Sales | 2000 | 2016-01-04 | | Kate | Engineering | 1500 | 2013-12-10 | | Bill | Sales | 1800 | 2015-04-01 | +------+-------------+--------+------------+ |
Tableau Desktop から接続するためのユーザを作成します。
1 2 3 4 5 |
MariaDB [test]> grant all on *.* to tableau@'%' identified by 'password'; Query OK, 0 rows affected (0.00 sec) MariaDB [test]> flush privileges; Query OK, 0 rows affected (0.00 sec) |
Tableau Desktopのインストール
Tableau Desktop を こらち からダウンロードし,インストールします。
Tableau Desktop を MariaDB ColumnStore 1.2 に接続
MySQL コネクタを用いて MariaDB ColumnStore に接続します。MariaDB は MySQL 互換ですので MySQL コネクタが利用可能となっています。
- Server: DockerホストのIPアドレス
- Port: 3306
- Username: tableau
- Password: password
正常に接続できましたら,test データベースと emp / dept テーブルを選択します。
Tableau Desktop 上での操作手順を動画にキャプチャしてありますので,こちらのリンクよりご覧いただけます。
https://mariadb-jp.wistia.com/medias/ofvpaxuu9b
まとめ
新たに公開されたDockerイメージを用いて MariaDB ColumnStore を起動し,Tableau Desktop から ColumnStore コンテナ上のデータにアクセスする手順を紹介しました。
Tableau Desktop により直感的なGUIを用い,SQLを用いることなく高速,簡便に MariaDB ColumnStore 上の大量のデータにアクセスすることが可能です。