SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
Transactd
高速・高機能なNoSQLプラグイン
ビズステーション株式会社 矢口 尚
1
矢口 尚 (Hisashi Yaguchi)
ビズステーション株式会社 代表取締役社長
所在地 :長野県松本市井川城
主な事業:販売管理・財務会計ソフト開発販売
(主にSnap-on用)
システムコンサルティング
言語 :C++好き Java(Android) C# VB
http://www.bizstation.jp
Twitter @bizstationcorp
自己紹介
2
①Transactdとは?
②よいところ
③初めの一歩
④ライセンス
⑤おわりに
Transactd
3
Transactdとは?
MySQL/MariaDB用
高速・高機能な
NoSQLプラグイン
4
Transactdとは?
しくみ
 Handlerインターフェースでのアクセス
(HandlerSocket plugin と同様)
 クライアント側
client library
 サーバー側
daemon plugin
高速・高機能なNoSQLプラグイン
5
MySQL
Server
Storage Engines
SQL Layer
Handler Interface
Transactd Plugin
App MySQL ClientTransactd Client
よいところ
ベンチマーク
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
よいところ
高機能
 トランザクションが使用可能
 CREATE DATABASE/TABLEも可能
 もちろんバイナリデータも扱える
→ 単品でアプリ開発が可能なレベルの高機能
他にも…
 Windowsに対応
(HandlerSocket / memcached pluginは現状非対応)
 高機能でもサーバー側のCPU負荷が小さい
高機能なNoSQLプラグイン
7
よいところ
プログラマが
パフォーマンスを
組み立てられる
8
新しい価値
よいところ
パフォーマンスを組み立てられる
9
……って、どういうこと?
よいところ
たとえば select * from table where id >= 26558 and id < 26560
and qty = 10000
パフォーマンスを組み立てられる
10
このSQL文で、レコードをどのように検索するか?
MySQLでは最後はオプティマイザが決める
≒
なのでパフォーマンスも同様
Transactdでは検索レコードを
プログラマが決めます
オプティマイザの気持ちになれます!
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)
• インデックスと条件からしてもう
マッチレコードはない(自動判定)
よいところ
パフォーマンスを組み立てられる
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
よいところ
SQLとのハイブリッド
13
さらにSQLとの良いとこ取りも可能!
• 速度が重要ならTransactdで高速に
• EasyにJoinして集計するならSQLで
1つのデータベースに対して両方が使えることは
MySQLの大きなメリット。
BizStationブログ http://bizstation.hatenablog.com
初めの一歩
プチ・チュートリアル
14
初めの一歩 インストール
サーバープラグイン編
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するだけ
初めの一歩 インストール
クライアントライブラリ編
16
インストーラを実行するだけ
1. ホームページからダウンロード
http://www.bizstation.jp/al/transactd/download/
2. インストーラを実行
• インストーラではC++用とCOM 用のクライ
アントライブラリがインストールされる
• Ruby、PHP用は 別途インストール
詳しくは:インストールガイド
http://www.bizstation.jp/ja/transactd/documents/install_guide.html
おわり
初めの一歩
テーブル準備は?
17
SQLで作成したテーブルをそのまま開ける
 Transactd用のスキーマ情報テーブルを新たに1つ作
成するのみ。既存テーブルは変更しない
 既存のデータは変更不要!
 スキーマ情報テーブルは自動生成可能
→ 準備はなにも必要ない
初めの一歩
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
初めの一歩
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
ライセンス
GPLv2
商用
20
or
(MySQLと同じ)
ライセンス
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
おわりに
実績・今後 など
22
おわりに
実績(PSQLからのマイグレーション・弊社事例)
23
クライアントライブラリ
• 300台程度の顧客PCで動作中(販売/在庫管理ソフト)
• Actian PSQLのBtrieve APIと互換性があるため、
PSQLサーバーへ接続するクライアントとして使用
サーバープラグイン
• 弊社の社内システムとして約1年稼働中
• PSQLサーバー+PSQLクライアントの構成から
MySQL+Transactdにマイグレーション
実績と今後
今後の予定(2014年2月時点)
24
• O/Rマッピングの作成
• その次はJava用(予定)
•
https://github.com/bizstation/transactd
協力者大歓迎
動作報告/宣伝/文書校正 etc なんでも助かります
おわりに
まとめ:こんな人におススメしたい
25
• 今あるMySQLアプリをきびきびさせたい
• 部分的なパフォーマンス問題を解決したい
• スケーリングに備えて、NoSQLにしたい
• DBサーバー台数を削減したい
• Windows MySQLでNoSQLを使いたい
• オプティマイザの気持ちになりたい
• PSQLからのマイグレーション先を探しています
• HandlerSocketはWindowsで使えなくて泣きました
• memcached pluginはWindowsで(略)
是非 Trnasactdを試してみてください
(一部の人向け)
ご清聴ありがとう
ございました。
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詳細やサンプル

Weitere ähnliche Inhalte

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

WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
Recruit Technologies
 
オープニング
オープニングオープニング
オープニング
konekto
 
Dyna traceによるuxマネジメント
Dyna traceによるuxマネジメントDyna traceによるuxマネジメント
Dyna traceによるuxマネジメント
伸夫 森本
 

Ähnlich wie Transactd ~高速・高機能なNoSQLプラグイン for MySQL/MariaDB~ (20)

楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
 
オトナのService Fabric~マイクロサービス編
オトナのService Fabric~マイクロサービス編オトナのService Fabric~マイクロサービス編
オトナのService Fabric~マイクロサービス編
 
マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介
 
楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
 
【16E2】New Relic を使ったDevOps 時代のパフォーマンス監視と障害分析入門
【16E2】New Relic を使ったDevOps 時代のパフォーマンス監視と障害分析入門【16E2】New Relic を使ったDevOps 時代のパフォーマンス監視と障害分析入門
【16E2】New Relic を使ったDevOps 時代のパフォーマンス監視と障害分析入門
 
オープニング
オープニングオープニング
オープニング
 
【CEDEC2018】Azure最新情報+「オトギフロンティア」運用大公開+サーバーレスアーキテクチャー
【CEDEC2018】Azure最新情報+「オトギフロンティア」運用大公開+サーバーレスアーキテクチャー【CEDEC2018】Azure最新情報+「オトギフロンティア」運用大公開+サーバーレスアーキテクチャー
【CEDEC2018】Azure最新情報+「オトギフロンティア」運用大公開+サーバーレスアーキテクチャー
 
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォームSAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
SAP HANAは 単なるインメモリーデータベースじゃなくて (賢い)アプリの開発・実行プラットフォーム
 
第4回SIA研究会(例会)プレゼン資料1_ m2 soft 紹介資料
第4回SIA研究会(例会)プレゼン資料1_ m2 soft 紹介資料第4回SIA研究会(例会)プレゼン資料1_ m2 soft 紹介資料
第4回SIA研究会(例会)プレゼン資料1_ m2 soft 紹介資料
 
2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~2011年マイクロソフト テクノロジー振り返り~開発編~
2011年マイクロソフト テクノロジー振り返り~開発編~
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
 
月間 250 億 imps 配信するために fluct が考えていること!
月間 250 億 imps 配信するために fluct が考えていること!月間 250 億 imps 配信するために fluct が考えていること!
月間 250 億 imps 配信するために fluct が考えていること!
 
20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento
 
AWSの最新動向と事例から知る クラウド利用の進化と真価
AWSの最新動向と事例から知る クラウド利用の進化と真価AWSの最新動向と事例から知る クラウド利用の進化と真価
AWSの最新動向と事例から知る クラウド利用の進化と真価
 
クラウドと共に進むエンジニアの進化
クラウドと共に進むエンジニアの進化クラウドと共に進むエンジニアの進化
クラウドと共に進むエンジニアの進化
 
Dyna traceによるuxマネジメント
Dyna traceによるuxマネジメントDyna traceによるuxマネジメント
Dyna traceによるuxマネジメント
 
クラウドの破壊力
クラウドの破壊力クラウドの破壊力
クラウドの破壊力
 
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
 
新規事業を加速させる技術
新規事業を加速させる技術新規事業を加速させる技術
新規事業を加速させる技術
 

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