2015/05/23

MemSQL Community Editionを使ってみた

- MySQL互換のNoSQLではないRDBMSソリューション
- 特徴はインメモリなので超高速
  - http://www.memsql.com/

- MemSQLにCommunity Editionという無償で利用できるエディションが登場したので試してみた。
  - サポートが提供されない。コミュニティに頼れよというエディション
  - オープンソースではなく、バイナリ配布のみ
  - 機能制限がないわけではないみたい(下記)

- MemSQL OpsというWebインターフェイスが用意されており管理/プロビジョニングがとても簡単にできる
  - http://www.memsql.com/ops/

- MySQL互換なので、MySQLのツールがそのまま使える。
  - ためしたのはMySQL Client(コマンドラインツール)とphpMyAdmin
  - そのまま使えるのでNoSQLへの移行に比べると敷居は低いと思う

- 実際に試してみた
  - 4仮想コア×4GBメモリを4台用意したクラスタを作成した
  - OSはUbuntuを利用
  - インストールは1台目のみ行い、それ以外のノードは上記のMemSQL Opsから実施

- 感想
  - 遅い
    - Create Tableに30秒かかったのはびっくりした。
    - 10万件の投入にそこそこ時間がかかった
  - ノードが落ちると全体が止まる
    - クラスタの1台を強制停止させてみたらクラスタ全体が停止した。参照(Select)もできない。
    - http://open-groove.net/memsql/memsql-high-availability-test/
      - mysql> select * from memtest;
      - ERROR 1777 (HY000): Partition memsql_test:1 has no master instance.
      - mysql>  SELECT @@GLOBAL.redundancy_level;
      - +---------------------------+
      - | @@GLOBAL.redundancy_level |
      - +---------------------------+
      - |                         1 |
      - +---------------------------+
      - 1 row in set (0.00 sec)
      - mysql> SET @@GLOBAL.redundancy_level = 2;
      - ERROR 1727 (HY000): Feature 'redundancy-2' is only available in MemSQL Enterprise Edition. Please see http://docs.memsql.com/4.0/editions or email support@memsql.com.
    - 簡単に言うと、整合性を重視してノードが死んだら全部止めるという方式から変更したければEnterprises版買えということらしい。

- パフォーマンスについては自分の設定が悪いので使いこなせていないだけだと思う。。。
  - ローカル接続を試すと改善すると思われる

- 結局はEnterprises Editionじゃないと何もできないに等しい
  - http://docs.memsql.com/4.0/enterprise/
  - 上記のノードが死んだら全体止まるというのは単純に障害点が増えるだけで嬉しくない。
    - 負荷に応じてスケールアップ/スケールアウトが簡単にできると思っていたら残念な結果に。
  - バックアップやリストアもEnterprisesじゃないとできないので、Community Editionをサービス投入と言うのは難しいというか無理。