Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
handlersocket – Spider – - handlersocket – InnoDBなど                             斯波健徳         kentokushiba[at]gmail[dot]com
Spiderストレージエンジンとは
Spiderストレージエンジンとは?Spiderストレージエンジンとは、MySQLのストレージエンジンの1種で、複数のデータベースサーバにあるテーブルを束ねて、1つのテーブルとして利用することを可能にします。これは、クラウド環境においては、増え...
Spiderを利用した構成例          AP        AP               LB          DB        DB          DB        DB   アプリケーションはSpiderの入ったMyS...
Spiderを利用した構成例     AP   AP        AP   AP               LB     DB   DB        DB   DB     DB   DB        DB   DBトラフィックが増えた...
「Spider」と「handlersocket」
Spider経由で、分散環境のhandlersocketにアクセスできる handlersocketインターフェースからSpiderテーブルを 利用すると、Spiderがデータノードにアクセスする際にも handlersocketインターフェー...
Spider経由で、分散環境のhandlersocketにアクセスできる データノードがhandlersocketに対応していない場合は、 use_hs_read、use_hs_writeを0に設定することで、 データノードへのアクセスをSQL...
アプリケーションからDB(Spiderノード)へのアクセス           AP        AP                LB           DB        DB           DB        DB   アプリ...
Spiderからデータノードへのアクセス           AP        AP                LB           DB        DB           DB        DB      Spiderはデー...
「Spider」と「handlersocket」を組み合わせると何がいいのか?
Spiderとhandlersocketを組み合わせると何がいいのか?・handlersocketを分散環境で利用できる。 スケールアウトで、メモリやCPUリソースを拡張できる。・handlersocketアクセスとSQLアクセスで、見ているデ...
Spiderとhandlersocketを組み合わせると何がいいのか?・handlersocketアクセスとSQLアクセスで、テーブルの 分散ルールを統一することができる。・テーブルによってデータノードへのアクセスをhandlersocket ...
「handlersocket」にオプションを追加してみた
handlersocketにオプションを追加してみた・handlersocket_support_merge_table 1を設定すると、handlersocketでmerge_myisam、vpのテーブルを 利用できるようになる。 ただし、テ...
handlersocketにオプションを追加してみた・handlersocket_direct_update_mode 更新の情報をストレージエンジン層にそのまま渡し、大量更新を 高速化するためのオプション。現在のところSpiderのみがこの ...
handlersocketにオプションを追加してみた・handlersocket_unlimited_boundary limitを無制限とみなす閾値です。 テーブルパーティショニングを利用しているテーブルで direct_update_mod...
handlersocketにオプションを追加してみた・handlersocket_bulk_insert handlersocketに対して行われるinsertを、bulk insertとして まとめてinsertするオプション。 複数ユーザか...
handlersocketにオプションを追加してみた・handlersocket_bulk_insert_timeout handlersocket_bulk_insertのレコード数に達しない状態でも、 bulk insertを実施する最大待...
「spider_direct_sql()」で  「handlersocket」を呼び出せるようにしてみた
spider_direct_sql()でhandlersocketを呼び出せるようにしてみたspider_direct_sql()は、Spiderストレージエンジンのインストールスクリプトを実行すると利用可能になるUDFです。SQLインターフェ...
spider_direct_sql()でhandlersocketを呼び出せるようにしてみた使い方(handlersocketのprotocol.ja.txtが参考になります)・テーブルオープン  select spider_direct_sq...
spider_direct_sql()でhandlersocketを呼び出せるようにしてみたこの機能は、Spider 2.27から          利用可能になります。
「Spider」と「handlersocket」に関する         今後の活動予定
Spiderとhandlersocketに関する今後の活動予定・handlersocketバンドル版MySQLのhandlersocket最新化・Spider側へのhandlersocket新機能への対応・handlersocketの全文検索対...
handlersocketバンドル版MySQLのhandlersocket最新化handlersocketは、そのままだと別でコンパイルしてinstallすることはできるのですが、MySQLのソースコードにバンドルしてコンパイルはできないので、...
Spider側へのhandlersocket新機能への対応handlersocketは、更新を行った際に更新対象のレコードを検索結果のように返すことができるようになっていたり、インデックス以外の条件で絞り込みを行うフィルタをサポートしたり、機能...
handlersocketの全文検索対応handlersocketで全文検索ができれば、それはそれで便利なのではないかということで、計画中です。handlersocketは独自プロトコルなので、SQLではできないことに踏み込みやすいという利点が...
まとめ
まとめSpiderとhandlersocketを組み合わせると ・・・・・・分散DB環境でhandlersocketが利用できる。・冗長化機能などのSpiderの機能をhandlersocketに 組み合わせることができる。など、可能性が広がり...
まとめ今後も継続的に開発していきますので、      どうぞよろしくおねがいします。
Any Questions?Thank you for taking    your time!!  Kentoku SHIBA (kentokushiba@gmail.com)  http://wild-growth-ja.blogspot....
Upcoming SlideShare
Loading in …5
×

hs_spider_hs_something_20110906

1,918 views

Published on

handlersocket with spider

  • Be the first to comment

  • Be the first to like this

hs_spider_hs_something_20110906

  1. 1. handlersocket – Spider – - handlersocket – InnoDBなど 斯波健徳 kentokushiba[at]gmail[dot]com
  2. 2. Spiderストレージエンジンとは
  3. 3. Spiderストレージエンジンとは?Spiderストレージエンジンとは、MySQLのストレージエンジンの1種で、複数のデータベースサーバにあるテーブルを束ねて、1つのテーブルとして利用することを可能にします。これは、クラウド環境においては、増え続けるデータを、サーバをどんどん増やしながら分割して管理するために利用することができます。MySQLと同じく、GPLライセンスで公開しています。
  4. 4. Spiderを利用した構成例 AP AP LB DB DB DB DB アプリケーションはSpiderの入ったMySQLに SQL(参照/更新)を実行すると、Spiderが透過的に後ろにあるデータノードにアクセスして結果を返します。
  5. 5. Spiderを利用した構成例 AP AP AP AP LB DB DB DB DB DB DB DB DBトラフィックが増えたり、データが増えたりした場合は、このようにサーバを追加して、負荷分散を行います。
  6. 6. 「Spider」と「handlersocket」
  7. 7. Spider経由で、分散環境のhandlersocketにアクセスできる handlersocketインターフェースからSpiderテーブルを 利用すると、Spiderがデータノードにアクセスする際にも handlersocketインターフェースでアクセスします。 (use_hs_read、use_hs_writeを1に設定してください) ※テーブルパーティショニングを利用しているSpiderテーブルに、 offset、limit付きの更新をした場合など、設定に関わらず SQLでのアクセスとなるケースもあります。
  8. 8. Spider経由で、分散環境のhandlersocketにアクセスできる データノードがhandlersocketに対応していない場合は、 use_hs_read、use_hs_writeを0に設定することで、 データノードへのアクセスをSQLにすることができます。 (テーブル単位で設定可能)
  9. 9. アプリケーションからDB(Spiderノード)へのアクセス AP AP LB DB DB DB DB アプリケーションはSpiderの入ったMySQLの handlersocketインターフェースにアクセス。
  10. 10. Spiderからデータノードへのアクセス AP AP LB DB DB DB DB SpiderはデータノードのMySQLの Handlersocketインターフェースにアクセス。
  11. 11. 「Spider」と「handlersocket」を組み合わせると何がいいのか?
  12. 12. Spiderとhandlersocketを組み合わせると何がいいのか?・handlersocketを分散環境で利用できる。 スケールアウトで、メモリやCPUリソースを拡張できる。・handlersocketアクセスとSQLアクセスで、見ているデータが 同じなので、データ矛盾が発生しない。・冗長化機能など、Spiderの機能を合わせて利用できる。
  13. 13. Spiderとhandlersocketを組み合わせると何がいいのか?・handlersocketアクセスとSQLアクセスで、テーブルの 分散ルールを統一することができる。・テーブルによってデータノードへのアクセスをhandlersocket アクセスかSQLアクセスかを選択できるので、テーブルによって SQLアクセスを選択し、データノードにトリガを仕掛けるなど、 柔軟性の高い利用が可能。・更新が並列化できる。 1サーバに複数MySQLインスタンスを立てる。
  14. 14. 「handlersocket」にオプションを追加してみた
  15. 15. handlersocketにオプションを追加してみた・handlersocket_support_merge_table 1を設定すると、handlersocketでmerge_myisam、vpのテーブルを 利用できるようになる。 ただし、テーブルオープンのコストが少し増える。
  16. 16. handlersocketにオプションを追加してみた・handlersocket_direct_update_mode 更新の情報をストレージエンジン層にそのまま渡し、大量更新を 高速化するためのオプション。現在のところSpiderのみがこの オプションの恩恵を受けることができる。0:direct update mode off1:direct update mode 1 direct updateが機能した場合に、ローカルサーバにバイナリログを残すことができる モードです。2:direct update mode 2 direct updateが機能した場合に、ローカルサーバにバイナリログを残さない モードですが、最速のモードになります。 データノード側(Spiderのアクセス先)でバイナリログを残すことは可能です。
  17. 17. handlersocketにオプションを追加してみた・handlersocket_unlimited_boundary limitを無制限とみなす閾値です。 テーブルパーティショニングを利用しているテーブルで direct_update_modeを利用するために必要になります。
  18. 18. handlersocketにオプションを追加してみた・handlersocket_bulk_insert handlersocketに対して行われるinsertを、bulk insertとして まとめてinsertするオプション。 複数ユーザからのinsertもbulk insertになるという特徴があり、 単一行のinsertをマルチスレッドで行うようなアプリケーションの insertの高速化に威力を発揮する。(特にSpider)0:bulk insertを実施せず、1レコードずつのinsertを行います。1-:指定された値を超えるレコードが蓄積されると、bulk insertが実施されます。
  19. 19. handlersocketにオプションを追加してみた・handlersocket_bulk_insert_timeout handlersocket_bulk_insertのレコード数に達しない状態でも、 bulk insertを実施する最大待機時間。(秒)
  20. 20. 「spider_direct_sql()」で 「handlersocket」を呼び出せるようにしてみた
  21. 21. spider_direct_sql()でhandlersocketを呼び出せるようにしてみたspider_direct_sql()は、Spiderストレージエンジンのインストールスクリプトを実行すると利用可能になるUDFです。SQLインターフェースから、他のサーバへ直接SQLを実行し結果をテンポラリテーブルへ格納することができます。この、spider_direct_sql()でhandlersocketを呼び出せるようにしてみました。spider_direct_sql()でhandlersocketを呼び出す場合、性能的なメリットは、工夫した使い方をしないとあまりないと思いますが、お手軽にhandlersocketを利用することが可能になるかと思います。性能を出すためのポイント:spider_direct_sql()側では、テンポラリテーブルへの 格納のオーバーヘッドがありますが、 handlersocket側の性能は変わりません。
  22. 22. spider_direct_sql()でhandlersocketを呼び出せるようにしてみた使い方(handlersocketのprotocol.ja.txtが参考になります)・テーブルオープン select spider_direct_sql(P¥t1¥ttest¥tt1¥tPRIMARY¥ta,b,c,,host "localhost", port "9999", access_mode "2");・INSERT select spider_direct_sql(1¥t+¥t3¥t503¥tr¥t2011-09-06 18:30:00,,host "localhost", port "9999", access_mode "2");・SELECT (tmp_tというテンポラリテーブルに結果を格納する) select spider_direct_sql(1¥t=¥t1¥t503¥t3¥t0,tmp_t, host "localhost", port "9999", access_mode "2");・UPDATE select spider_direct_sql(1¥t=¥t1¥t503¥t1¥t0¥tU¥t500¥tq¥t2011-09-06 19:40:00,,host "localhost", port "9999", access_mode "2");・DELETE select spider_direct_sql(1¥t=¥t1¥t500¥t1¥t0¥tD,,host "localhost", port "9999", access_mode "2");
  23. 23. spider_direct_sql()でhandlersocketを呼び出せるようにしてみたこの機能は、Spider 2.27から 利用可能になります。
  24. 24. 「Spider」と「handlersocket」に関する 今後の活動予定
  25. 25. Spiderとhandlersocketに関する今後の活動予定・handlersocketバンドル版MySQLのhandlersocket最新化・Spider側へのhandlersocket新機能への対応・handlersocketの全文検索対応 など。
  26. 26. handlersocketバンドル版MySQLのhandlersocket最新化handlersocketは、そのままだと別でコンパイルしてinstallすることはできるのですが、MySQLのソースコードにバンドルしてコンパイルはできないので、それができるように、加えてSpiderなどInnoDB以外のストレージエンジンでもいい感じに動くようにMySQLにパッチを当てつつ手直しして、バンドルしています。このため、今バンドルされているhandlersocketは、今年の4月ぐらいのものになっているので、これを最新化します。
  27. 27. Spider側へのhandlersocket新機能への対応handlersocketは、更新を行った際に更新対象のレコードを検索結果のように返すことができるようになっていたり、インデックス以外の条件で絞り込みを行うフィルタをサポートしたり、機能追加が積極的に行われています。Spider経由でhandlersocketを利用する場合も、当然それらの恩恵を享受できる必要があるため、対応を行います。
  28. 28. handlersocketの全文検索対応handlersocketで全文検索ができれば、それはそれで便利なのではないかということで、計画中です。handlersocketは独自プロトコルなので、SQLではできないことに踏み込みやすいという利点があります。樋口さんには今日相談しますので、話がなくなったらすみません。
  29. 29. まとめ
  30. 30. まとめSpiderとhandlersocketを組み合わせると ・・・・・・分散DB環境でhandlersocketが利用できる。・冗長化機能などのSpiderの機能をhandlersocketに 組み合わせることができる。など、可能性が広がります。
  31. 31. まとめ今後も継続的に開発していきますので、 どうぞよろしくおねがいします。
  32. 32. Any Questions?Thank you for taking your time!! Kentoku SHIBA (kentokushiba@gmail.com) http://wild-growth-ja.blogspot.com/ http://spiderformysql.com

×