MemSQLを使ってみようVol.6 : 脱線編

#本編に戻る前に、少し脱線します・・・
前回は、MemSQLを取り急ぎ試したりするための、小規模環境としてDocker上での起動について紹介させて頂きました。
本来の予定では、今回より最初に導入した物理環境のCentOS7上で稼働する、MemSQLの試用環境を使った実践編を開始する予定でしたが、Windows+Dockerという事で**「Excelに対して、MySQLのフリをしてのデータI/Oは可能か？！」**について簡単な実証実験を行ってみたいと思います。
##今回の実証環境について
今回の実証に使う環境は以下の通りです。ソフトウエアのバージョン同士の組み合わせによっては、状況が変わる可能性がありますので、MemSQL以外の構成情報を基本的なパラメータとして明確化しておきます。

（１）OS　Windows 10 Pro (OSビルド　18363.535)

（２）Docker Desktop Version 2.1.0.5 (40693)　　Chanel stable

（３）Microsoft Excel　Office365 (16.0.12130.20184) 32ビット

これらの環境に幾つかの追加作業を行って、前回動かしたDocker版のMemSQLとMS-Excelを連携させてみたいと思います。

##では、作業を開始します！
最初にExcelとMySQLを連携させる必要がありますので、そのためのソフトウエアを導入します。今回はExcelのGUI上（データの項目にアイコンが追加されます）に判り易く表示され、その後の使い勝手も良さそう・・という事で、**MySQL for Excel**を使う事にします。

（１）必要な環境を収集します。
先ずは、**MySQL for Excel**をダウンロードします。

[**ダウンロード先のURLはここから・・**](https://dev.mysql.com/downloads/windows/excel/)
![f1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/8673aae0-89b9-2456-bc8c-ef02bf8bb3ef.jpeg)
ダウンロードしたインストーラーを起動した際に、ランタイムライブラリが無い！というメッセージが出て、その先のインストールが出来ない場合があるかと思います（自分も一瞬ここに引っかかりました）が、その際には慌てずに所要のランタイムライブラリをマイクロソフト社の公式サイトより取得して、（１）のインストールの前に導入するようにしてください。

参考URL:　https://www.microsoft.com/ja-JP/download/details.aspx?id=48217

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/e8c83595-00ce-3a96-fdfa-aae2ad19b53a.png)

（２）連携環境を導入
ランタイムが入っていれば、**MySQL for Excel**自体はサクッと入ると思います。

（３）無事に入ったかの確認
Excelを起動して**「データ」**を選択し、右上に今回導入した**MySQL for Excel**のアイコンが追加されている事を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/4eb27fdd-bfbe-f529-087e-31aa07677422.png)
無事に追加されている場合は、そのアイコンをクリックしてみてください。この後以降に行うデータ連携の設定GUIが出てくると思います。

（４）**MemSQLがMySQLのフリをして、無事にExcelと連携出来るか？！**の設定
同じマシン上のローカルに、前回導入したDocker上のMemSQLが無事に動いていれば、とりあえずご紹介してある**「チュートリアル」**を実施してサンプルのデータベースを構築してください。手順は各チュートリアルに入って頂いて、順番にボタンを押してクエリ等をコピーし、それをRunボタンで実行していくだけで完結できます。
幾つかのチューリアルを行うと、こんな感じでデータベースが出来上がると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/1efd3fdd-9598-d070-6913-fb0b8874d6cb.png)
今回は、一番上の**books**を使って、Excelと連携出来るか実証してみたいと思います。
設定メニューの下の方に**New Connection**という所が有りますので、その部分を選択すると接続設定のポップアップが出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/9ebcf683-a058-df64-5a9e-027ab9efe2c2.png)
**Connection Name** : **MemSQL01** ここは識別出来ればOKかと。
**Hostname** : **localhost** 今回は、ローカルDockerのMemSQLなので。。ポートはMySQLの公式番号(**3306**)です。
**Username** : **root** 前回はパスワード無しのrootだったのでrootを設定します。
**Default Schema** : **books** デフォルトのデータベースを設定しますが、特に指定しなくてもOKみたいですね。

設定が終わると、データベースが選択できるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/fc56a31f-9534-0bb0-bc77-46c8c9a5c3b7.png)
今回は、この作業以前に2つのチュートリアルを実施していますので、booksとtradesというデータベースが出来ています（他の２つは、MemSQLが作ったものなので、ここでは当たらず触らずでお願いします）のでbooksを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/f708cec8-1508-c1f8-c306-cd857a30d17b.png)
チュートリアルで作成されたテーブルが出てきますので、それを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/781667d5-6868-252f-4e0e-6f33452e4979.png)
インポートの為のポップアップが出てきますので、必要な作業があればそれらを行って右下の**「import」**ボタンを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/1809f7d8-dd54-cbcf-4b87-866441ec787f.png)
無事にExcel上へMemSQL上のテーブルをインポート出来ました！！

##今回のまとめ
今回検証した組み合わを活用する事で、MemSQLとExcelを**MySQLのフリをさせて**上手く連携させることがシンプルに実現し、Excel環境の強い味方になって結構ハードなクエリを掛けてテーブルをインポートしても、十分実業務でのBI的な作業を支援出来る事が実証出来たかと思います。（注意点は、Excel側の制限になるかと）
既存の電子帳簿的な業務システムのデータベースから、必要なデータを抽出・転送し（最近はこの領域のソリューションも飛躍的に進化をしています）、そのテーブルに対して各種のクエリを実施して必要なテーブルをインポートし、Excelの機能を活用した可視化等を行うという、データドリブンを起点としたDxを大きく推進出来るエネルギーをMemSQLは持っていると思います。

Excel等を活用したCI (Chart Intelligence)
高度なデータ分析・予測のBI
CI/BIとデータを共有しする事で、さらに業務価値を向上させるAI

これらの全てのデータ層をMemSQLが最大効率化させる事が可能です。

今回の実証実験で、MySQLとの高い互換性が確認出来ましたので、次回以降の本編上ではSASとかRといった、BI,AIに活用されている高度分析エンジンとの組み合わせも検証してみたいと考えています。（あと、期間限定の試用版を使わせて頂いて、各社のデータ系ソリューションも可能であれば・・・）

##データを諦めないCI/BI/AI&ML
MemSQLはデータドリブン＆Dxの為の切り札になれる可能性を秘めた、非常に有効かつ効果的なソリューションと言えるかもしれません。
システムを検討する際に、計算能力系にはかなりの投資をされるケースが多いかと思いますが、データ利活用系のソリューションの場合、その起点である基本的なデータ処理能力が非常に重要になります。
またこの領域の最大の問題は、データ量の変化に対して、どれだけ柔軟に対応が可能なのか？にあり、スケール性能を汎用のIAサーバ（この意味も非常に重要であり、スケールさせる前提として、普通のマシンで対応出来るという事は、コスト面や運用面で大きなアドバンテージが獲得できます）をつかって実現できるメリットは非常に大きな力になるでしょう。


##次回以降の予定
次回からは、そろそろ本編の続きに戻りたいと思いますので、引き続き宜しくお願い致します。

[**MemSQLを使ってみようVol.7:実践編1**](https://qiita.com/wadaken1961/items/fad3767933e618955114)に続く