O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

5.236 visualizações

Publicada em

MySQL Talk in 長野 (NSEG #49) での発表資料です。
http://nseg.doorkeeper.jp/events/9286

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

①Transactdとは?
②よいところ
③初めの一歩
④ライセンス
⑤おわりに

Publicada em: Tecnologia
  • Seja o primeiro a comentar

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

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

×