SingleStoreを試す！（導入準備編）

# 突然（？）奴がやって来た・・・
以前の投稿で、MemSQLなるMySQL互換でインメモリ技術＋分散クラスターデータベースを試用し、その可能性などを検証して来ましたが、今回はその後継（基本的には名称を変更した、正常進化型のMemSQLなのですが・・・）としてSingleStoreを簡単に検証してみたいと思います。

## その前にロゴの変遷について（余談ですが・・）
実は、旧MemSQLの時代から、彼らのロゴは幾つかのバージョンが存在しています。
![スクリーンショット 2021-02-18 13.52.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/7d8d81f0-fbbd-4a29-00f7-1931d347e87b.png)
それぞれのタイミングで、幾つかの革新的な機能・性能アップや、大きな案件・パートナーシップの締結などが有りましたが、インメモリの幅だけではなく、より広義で「一つのデータ・ストア」まで進化出来た・・と言う思いを込めて、今回の名前であるSingleStoreになったと聞いております。

では、その進化を検証して行きたいと思います。

#まずは環境整備を行おう！
まずは、ベースとなるOS環境から準備を進めます。
現在SingleStoreは複数の種類の環境上で稼働させる事が可能ですが、今回の検証ではネィティブのCentOS7の上に環境を構築してみたいと思います。

~~~
CPU　　　Intel Core i7 (4C 8T)
メモリ　　 DDR3　８GB x 4　（３２GB)
SSD　　　128GB
~~~

## フリー版の入手方法
MemSQL時代から継続して、SingleStoreでも幾つかの条件の上で、引き続きフリーでの利用が可能になっています。
（１）SingleStoreのホームページから

![スクリーンショット 2021-02-18 14.06.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/14045b70-f341-3b50-cb08-c65c2a697b57.png)

この部分の**Start for Free ->**ボタンを選択するか、右上の

![スクリーンショット 2021-02-18 14.05.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/cddb1ae8-0bc5-d73d-2e43-2bfd956b4edc.png)

**Start Free ->**ボタンを選択します。

（２）次のページで、**Install Anywhere**を選択します。
![スクリーンショット 2021-02-18 14.09.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/6ab4b1d1-8ac0-53b2-7c56-02736310ad2b.png)

（３）必要事項を記入して** Continue ->**を選択します。
![スクリーンショット 2021-02-18 14.12.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/537a26da-8068-5fc6-f1f5-a82f59276eca.png)

この時に、フリーで利用できる条件等が左側に出て来ますので、必ず確認しておくようにしてください。
（サポート等は全てコミュニティー経由になり、基本的に自己責任で各種の作業などを行います）

（４）次のページの必要事項を埋めます。
![スクリーンショット 2021-02-18 14.17.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/3f8dca8f-1b63-fb18-d099-8aaf2d08a446.png)

この作業の後に、パスワード登録等のパージが出て来ますので、今回登録されるメールアドレスに紐つくSingleSTore用のパスワードを設定してください。

![スクリーンショット 2021-02-18 14.19.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/454c7eaf-dc77-0c38-ee33-08bc76400c15.png)

この後、登録された情報を元に、ライセンスコードが生成されSingleStoreのサイト経由でログイン出来る環境が出来上がります（先ほどの情報を使ってログイン出来る様になります）

![スクリーンショット 2021-02-18 14.30.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/60139167-0c72-5c8a-1a36-a7d0413679b6.png)

## ではインストール作業へ・・・
先ほどの右上にあるインストールのガイドボタンを選択すると

![スクリーンショット 2021-02-18 14.32.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/89ba441b-3b5a-dfbc-0370-f7bb558a1805.png)

の画面が出て来ますので、インストールの方式を選びます。左側を選択するとDocker環境への導入手順が指示されますので、その指示に従って作業を進めます。今回はネィティブのCentOS７ですので、右側を選んで作業を続行します。
（因みに、Docker版も普通に環境依存で動きますので、それなりのメモリとコアに余裕が有る場合には、こちらを選ばれても良いかもしれません。個人的にはPython環境（pymysqlで繋がります） + DBeaver + SingleStoreをMySQL接続で連携して、色々と弄ってみるのも面白いかな？と考えています）

この選択の場合は、Kubernetesとベアメタル・VM環境が選べる様になるので、今回はベアメタル側を選んで右下の**Next**ボタンを選択します。

![スクリーンショット 2021-02-18 14.45.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/dc12e4ae-b635-2843-e2cf-45ea0953ee2a.png)

以下の具体的な手順は、**View Installation Guide**からドキュメント化されていますので、その手順に従って順次実施してけば導入出来ます。（現状は全てのコンテンツが英語で記述されていますが、各種の翻訳ソフトやサービスを使えば、特に混乱される事は無いと思います）

但し、以降の手順を進める際に、インストール前に行うOSの環境整備の部分が少し解りづらい可能性が有りますので、その点だけ注意する様にしてください。

![スクリーンショット 2021-02-18 14.56.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/3e2b2efa-caa5-6b8a-7b71-c745def59422.png)

当該ページへ直接行く場合のURL
[**System Requirements and Recommendations**](https://docs.singlestore.com/v7.3/reference/configuration-reference/cluster-configuration-reference/system-requirements/)

# インストールの形式について・・・
SingleStoreをインストールする場合（物理・仮想環境へ）に幾つかのオプションから選択する事が出来る様になっています。今回は全ての環境を１台のマシンに導入する、４番目のオプションを選択しました（クラスタ系への導入の場合は、SSH関連の設定や、利用ポートの設定等に関して辻褄をきちんと合わせておく様にしてください）
![スクリーンショット 2021-02-18 15.07.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/0fde851c-5286-883b-67fe-64a7c27d12d2.png)

## ここで重要な点が！！
今回はオンラインで必要な環境を自動的に持ってくる方式を選択しましたが、その際に提示される手順通りに作業を行うと、出来上がったオールインワンのSingleStoreが外部と通信出来ない状態（MySQL等でも初期化ファイル等に設定しないと、立ち上がって来て・・ムムム？？となった経験があるかと）で導入設定されます。

~~~Shell
$ sdb-deploy cluster-in-a-box --license <license> \
--version 7.3 --password <secure-password>
~~~

ですので、前述の導入コマンドの引数の最後に、以下の引数を追加して処理を行ってください。もちろん、外部と通信不要の場合は入れる必要は有りません。

~~~Shell
--bind-address 0.0.0.0
~~~
[**参考URL：cluster-in-a-box**](https://docs.singlestore.com/v7.3/reference/memsql-tools-reference/memsql-deploy-reference/cluster-in-a-box/)

首尾よく導入が出来ると、Webブラウザ経由で以下の画面が出てくると思います。（既に100万行のカラムストア作成後なので、実際には右の下側には何も無い状態で立ち上がります）

![スクリーンショット 2021-02-23 9.11.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/bf750b2d-5b8f-0b1a-12e2-bb7adcb57fd6.png)

# 次回
次回は、今回導入したSingleStore上に100万行のインメモリテーブルと、100万行のカラムストアを作成し、それぞれに簡単なSQLを流して性能評価を行ってみたいと思います。

# 謝辞
本検証は、SIngleStore社の公式Freeバージョン（V7.３)を利用して実施しています。
この貴重な機会を提供して頂いたSingleStore社に対して感謝の意を表すると共に、本内容とSingleStore社の公式ホームページで公開されている内容等が異なる場合は、SingleSTore社の情報が優先する事をご了解ください。