Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

26
Transactd 高速・高機能なNoSQLプラグイン ビズステーション株式会社 矢口 尚 1

description

MySQL Talk in 長野 (NSEG #49) での発表資料です。 http://nseg.doorkeeper.jp/events/9286 Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~ ①Transactdとは? ②よいところ ③初めの一歩 ④ライセンス ⑤おわりに

Transcript of Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

Page 1: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

Transactd 高速・高機能なNoSQLプラグイン

ビズステーション株式会社 矢口 尚

1

Page 2: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

矢口 尚 (Hisashi Yaguchi)

ビズステーション株式会社 代表取締役社長

所在地 :長野県松本市井川城

主な事業:販売管理・財務会計ソフト開発販売 (主にSnap-on用)

システムコンサルティング

言語 :C++好き Java(Android) C# VB

http://www.bizstation.jp

Twitter @bizstationcorp

自己紹介

2

Page 3: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

①Transactdとは?

②よいところ

③初めの一歩

④ライセンス

⑤おわりに

Transactd

3

Page 4: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

Transactdとは?

MySQL/MariaDB用

高速・高機能な

NoSQLプラグイン

4

Page 5: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

Transactdとは?

しくみ

Handlerインターフェースでのアクセス (HandlerSocket plugin と同様)

クライアント側 client library

サーバー側 daemon plugin

高速・高機能なNoSQLプラグイン

5

MySQL Server

Storage Engines

SQL Layer

Handler Interface

Transactd Plugin

App MySQL Client Transactd Client

Page 6: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

よいところ

ベンチマーク http://www.bizstation.jp/ja/transactd/index.html#benchmark

1秒あたりRead回数 (5 client)

• SQLの約4倍

• 他のプラグインより高速 • トランザクションで更新がさらに高速

• スナップショットでランダム読み取りも さらに高速

高速なNoSQLプラグイン

6

7,293

12,671

24,754

27,667

27,533

0 6,000 12,000 18,000 24,000 30,000

SQL

memcached

HandlerSocket

Transactd (Ruby)

Transactd (C++)

Operations Per Second

Slow Fast

Page 7: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

よいところ

高機能

トランザクションが使用可能

CREATE DATABASE/TABLEも可能

もちろんバイナリデータも扱える

→ 単品でアプリ開発が可能なレベルの高機能

他にも…

Windowsに対応 (HandlerSocket / memcached pluginは現状非対応)

高機能でもサーバー側のCPU負荷が小さい

高機能なNoSQLプラグイン

7

Page 8: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

よいところ

プログラマが

パフォーマンスを

組み立てられる

8

新しい価値

Page 9: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

よいところ

パフォーマンスを組み立てられる

9

……って、どういうこと?

Page 10: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

よいところ

たとえば select * from table where id >= 26558 and id < 26560

and qty = 10000

パフォーマンスを組み立てられる

10

このSQL文で、レコードをどのように検索するか?

MySQLでは最後はオプティマイザが決める

なのでパフォーマンスも同様

Transactdでは検索レコードを

プログラマが決めます オプティマイザの気持ちになれます!

Page 11: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

11

アクセス方法を組み立ててみる (select* from table where id >=26558 and id < 26560 and qty = 10000)

①インデックス(番号)を決める table.index(key_id) ②検索開始キー値を指定する table.keyValue(26558) ③条件の指定 query.where(“id”, “<“, 26560) .and(“qty”, “=“, 10000) ④検索開始 table.read(query) ⑤どこかで検索をやめる (or最後まで) • 見つかった数 (limit) • スキップした数(reject) • インデックスと条件からしてもう

マッチレコードはない(自動判定)

Page 12: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

よいところ

パフォーマンスを組み立てられる

12

今の手順をそのまま新しいO/RマッピングAPIで書くと

query.where(“id”, “<”, 26560).and(“qty”, “=”, 10000).reject(0);

table.index(key_id).keyValue(26558).read(query);

赤色文字が検索インデックスと開始位置、青色文字が終了条件。

• インデックスと検索範囲をプログラマが定義

• なんとなくオプティマイザによって決まる不明瞭さがない

• インデックスの付け方や、パフォーマンスの良いSQL文の勉強になる

BizStationブログ http://bizstation.hatenablog.com

Page 13: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

よいところ

SQLとのハイブリッド

13

さらにSQLとの良いとこ取りも可能!

• 速度が重要ならTransactdで高速に

• EasyにJoinして集計するならSQLで

1つのデータベースに対して両方が使えることは

MySQLの大きなメリット。

BizStationブログ http://bizstation.hatenablog.com

Page 14: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

初めの一歩

プチ・チュートリアル

14

Page 15: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

初めの一歩 インストール

サーバープラグイン編

15

1. ホームページからダウンロード http://www.bizstation.jp/al/transactd/download/

2. MySQLのplugin_dirにコピー

3. mysql>INSTALL PLUGIN transactd SONAME ‘transactd.dll’;

詳しくは:インストールガイド http://www.bizstation.jp/ja/transactd/documents/install_guide.html

おわり

ビルド済バイナリをコピーして、install pluginするだけ

Page 16: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

初めの一歩 インストール

クライアントライブラリ編

16

インストーラを実行するだけ

1. ホームページからダウンロード http://www.bizstation.jp/al/transactd/download/

2. インストーラを実行

• インストーラではC++用とCOM 用のクライアントライブラリがインストールされる

• Ruby、PHP用は 別途インストール

詳しくは:インストールガイド http://www.bizstation.jp/ja/transactd/documents/install_guide.html

おわり

Page 17: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

初めの一歩

テーブル準備は?

17

SQLで作成したテーブルをそのまま開ける

Transactd用のスキーマ情報テーブルを新たに1つ作

成するのみ。既存テーブルは変更しない

既存のデータは変更不要!

スキーマ情報テーブルは自動生成可能

→ 準備はなにも必要ない

Page 18: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

初めの一歩

1

2

3

4

5

6

7

8

9

10

11

var db = new ActiveXObject('transactd.database');

db.Open('tdap://localhost/testdb?dbfile=transactd_schema');

if (db.Stat == 0) {

var tb = db.OpenTable('test_table');

if (tb.Stat == 0)

tb.Close();

else

WScript.Echo('table open error!');

db.Close();

} else

WScript.Echo('database open error!');

サンプル1(JScript)オープンとクローズ

18

Page 19: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

初めの一歩

1

2

3

4

5

6

7

8

tb.clearBuffer();

tb.Text(“name”) = 'BizStation';

tb.insert();

tb.KeyNum = 0;

tb.Vlng(“id”) = 1;

tb.Seek();

WScript.Echo(tb.Text(“name”));

サンプル2(JScript)INSERT/READ

19

Page 20: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

ライセンス

GPLv2

商用 20

or

(MySQLと同じ)

Page 21: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

ライセンス

GPLv2 or 商用 デュアルライセンス

21

• サーバープラグイン

∘ MySQLがCommunity Edition(GPLv2) → プラグインもGPLv2でのみ使用可能

∘ MySQLが商用Edition → 商用ライセンス検討中

• クライアントライブラリ

∘ クライアントもGPLv2

∘ MySQLのFOSSのようなOSS例外規定あり http://www.bizstation.jp/ja/transactd/support/ossex.html

∘ 商用ライセンス準備中 ライセンスFAQ http://www.bizstation.jp/ja/transactd/support/license_faq.html

Page 22: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

おわりに

実績・今後 など

22

Page 23: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

おわりに

実績(PSQLからのマイグレーション・弊社事例)

23

クライアントライブラリ

• 300台程度の顧客PCで動作中(販売/在庫管理ソフト)

• Actian PSQLのBtrieve APIと互換性があるため、PSQLサーバーへ接続するクライアントとして使用

サーバープラグイン

• 弊社の社内システムとして約1年稼働中

• PSQLサーバー+PSQLクライアントの構成からMySQL+Transactdにマイグレーション

Page 24: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

実績と今後

今後の予定(2014年2月時点)

24

• O/Rマッピングの作成

• その次はJava用(予定)

https://github.com/bizstation/transactd

協力者大歓迎 動作報告/宣伝/文書校正 etc なんでも助かります

Page 25: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

おわりに

まとめ:こんな人におススメしたい

25

• 今あるMySQLアプリをきびきびさせたい • 部分的なパフォーマンス問題を解決したい • スケーリングに備えて、NoSQLにしたい • DBサーバー台数を削減したい • Windows MySQLでNoSQLを使いたい • オプティマイザの気持ちになりたい

• PSQLからのマイグレーション先を探しています • HandlerSocketはWindowsで使えなくて泣きました • memcached pluginはWindowsで(略)

是非 Trnasactdを試してみてください

(一部の人向け)

Page 26: Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~

ご清聴ありがとう ございました。

Transactd http://www.bizstation.jp/ja/transactd

インストールガイド http://www.bizstation.jp/ja/transactd/documents/install_guide.html

SDK ドキュメント http://www.bizstation.jp/ja/transactd/client/sdk/doc/

26

導入方法

API詳細やサンプル