SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
handlersocket – Spider –
 - handlersocket – InnoDBなど



                             斯波健徳
         kentokushiba[at]gmail[dot]com
Spiderストレージエンジンとは
Spiderストレージエンジンとは?
Spiderストレージエンジンとは、MySQLのストレージ
エンジンの1種で、複数のデータベースサーバにある
テーブルを束ねて、1つのテーブルとして利用することを
可能にします。

これは、クラウド環境においては、増え続けるデータを、
サーバをどんどん増やしながら分割して管理する
ために利用することができます。

MySQLと同じく、GPLライセンスで公開しています。
Spiderを利用した構成例

          AP        AP

               LB



          DB        DB


          DB        DB

   アプリケーションはSpiderの入ったMySQLに
 SQL(参照/更新)を実行すると、Spiderが透過的に
後ろにあるデータノードにアクセスして結果を返します。
Spiderを利用した構成例

     AP   AP        AP   AP

               LB



     DB   DB        DB   DB


     DB   DB        DB   DB

トラフィックが増えたり、データが増えたりした場合は、
このようにサーバを追加して、負荷分散を行います。
「Spider」と「handlersocket」
Spider経由で、分散環境のhandlersocketにアクセスできる


 handlersocketインターフェースからSpiderテーブルを
 利用すると、Spiderがデータノードにアクセスする際にも
 handlersocketインターフェースでアクセスします。
 (use_hs_read、use_hs_writeを1に設定してください)


 ※テーブルパーティショニングを利用しているSpiderテーブルに、
  offset、limit付きの更新をした場合など、設定に関わらず
  SQLでのアクセスとなるケースもあります。
Spider経由で、分散環境のhandlersocketにアクセスできる




 データノードがhandlersocketに対応していない場合は、
 use_hs_read、use_hs_writeを0に設定することで、
 データノードへのアクセスをSQLにすることができます。
 (テーブル単位で設定可能)
アプリケーションからDB(Spiderノード)へのアクセス

           AP        AP

                LB



           DB        DB


           DB        DB

   アプリケーションはSpiderの入ったMySQLの
   handlersocketインターフェースにアクセス。
Spiderからデータノードへのアクセス

           AP        AP

                LB



           DB        DB


           DB        DB

      SpiderはデータノードのMySQLの
   Handlersocketインターフェースにアクセス。
「Spider」と「handlersocket」を
組み合わせると何がいいのか?
Spiderとhandlersocketを組み合わせると何がいいのか?


・handlersocketを分散環境で利用できる。
 スケールアウトで、メモリやCPUリソースを拡張できる。

・handlersocketアクセスとSQLアクセスで、見ているデータが
 同じなので、データ矛盾が発生しない。

・冗長化機能など、Spiderの機能を合わせて利用できる。
Spiderとhandlersocketを組み合わせると何がいいのか?


・handlersocketアクセスとSQLアクセスで、テーブルの
 分散ルールを統一することができる。

・テーブルによってデータノードへのアクセスをhandlersocket
 アクセスかSQLアクセスかを選択できるので、テーブルによって
 SQLアクセスを選択し、データノードにトリガを仕掛けるなど、
 柔軟性の高い利用が可能。

・更新が並列化できる。
 1サーバに複数MySQLインスタンスを立てる。
「handlersocket」に
オプションを追加してみた
handlersocketにオプションを追加してみた


・handlersocket_support_merge_table
 1を設定すると、handlersocketでmerge_myisam、vpのテーブルを
 利用できるようになる。
 ただし、テーブルオープンのコストが少し増える。
handlersocketにオプションを追加してみた

・handlersocket_direct_update_mode
 更新の情報をストレージエンジン層にそのまま渡し、大量更新を
 高速化するためのオプション。現在のところSpiderのみがこの
 オプションの恩恵を受けることができる。

0:direct update mode off
1:direct update mode 1
  direct updateが機能した場合に、ローカルサーバにバイナリログを残すことができる
  モードです。
2:direct update mode 2
  direct updateが機能した場合に、ローカルサーバにバイナリログを残さない
  モードですが、最速のモードになります。
  データノード側(Spiderのアクセス先)でバイナリログを残すことは可能です。
handlersocketにオプションを追加してみた


・handlersocket_unlimited_boundary
 limitを無制限とみなす閾値です。
 テーブルパーティショニングを利用しているテーブルで
 direct_update_modeを利用するために必要になります。
handlersocketにオプションを追加してみた


・handlersocket_bulk_insert
 handlersocketに対して行われるinsertを、bulk insertとして
 まとめてinsertするオプション。
 複数ユーザからのinsertもbulk insertになるという特徴があり、
 単一行のinsertをマルチスレッドで行うようなアプリケーションの
 insertの高速化に威力を発揮する。(特にSpider)

0:bulk insertを実施せず、1レコードずつのinsertを行います。
1-:指定された値を超えるレコードが蓄積されると、bulk 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インターフェースから、他のサーバへ直接SQLを実行し
結果をテンポラリテーブルへ格納することができます。

この、spider_direct_sql()でhandlersocketを呼び出せるように
してみました。
spider_direct_sql()でhandlersocketを呼び出す場合、
性能的なメリットは、工夫した使い方をしないとあまりないと
思いますが、お手軽にhandlersocketを利用することが
可能になるかと思います。
性能を出すためのポイント:spider_direct_sql()側では、テンポラリテーブルへの
             格納のオーバーヘッドがありますが、
             handlersocket側の性能は変わりません。
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"');
spider_direct_sql()でhandlersocketを呼び出せるようにしてみた




この機能は、Spider 2.27から
          利用可能になります。
「Spider」と「handlersocket」に関する
         今後の活動予定
Spiderとhandlersocketに関する今後の活動予定


・handlersocketバンドル版MySQLのhandlersocket最新化

・Spider側へのhandlersocket新機能への対応

・handlersocketの全文検索対応




                                     など。
handlersocketバンドル版MySQLのhandlersocket最新化


handlersocketは、そのままだと別でコンパイルしてinstallすることは
できるのですが、MySQLのソースコードにバンドルしてコンパイルは
できないので、それができるように、加えてSpiderなどInnoDB
以外のストレージエンジンでもいい感じに動くようにMySQLに
パッチを当てつつ手直しして、バンドルしています。

このため、今バンドルされているhandlersocketは、今年の4月
ぐらいのものになっているので、これを最新化します。
Spider側へのhandlersocket新機能への対応


handlersocketは、更新を行った際に更新対象のレコードを
検索結果のように返すことができるようになっていたり、
インデックス以外の条件で絞り込みを行うフィルタをサポートしたり、
機能追加が積極的に行われています。

Spider経由で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.com/
  http://spiderformysql.com

Contenu connexe

Tendances

Spider DeNA Technology Seminar #2
Spider DeNA Technology Seminar #2Spider DeNA Technology Seminar #2
Spider DeNA Technology Seminar #2
Kentoku
 
Handlersocket 20140218
Handlersocket 20140218Handlersocket 20140218
Handlersocket 20140218
akirahiguchi
 
VPとSPIDERを使ったMySQL運用
VPとSPIDERを使ったMySQL運用VPとSPIDERを使ったMySQL運用
VPとSPIDERを使ったMySQL運用
Ryuta Kamizono
 

Tendances (20)

OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
 
Rancher Meetup Tokyo #4 Intro
Rancher Meetup Tokyo #4 IntroRancher Meetup Tokyo #4 Intro
Rancher Meetup Tokyo #4 Intro
 
Spider DeNA Technology Seminar #2
Spider DeNA Technology Seminar #2Spider DeNA Technology Seminar #2
Spider DeNA Technology Seminar #2
 
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
2013OSC関西@京都_CloudStackとCloudFoundaryがまるわかり!
 
elasticsearchプラグイン入門
elasticsearchプラグイン入門elasticsearchプラグイン入門
elasticsearchプラグイン入門
 
LagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDKLagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDK
 
RancherでMesosクラスタをデプロイしてみる的ななにか
RancherでMesosクラスタをデプロイしてみる的ななにかRancherでMesosクラスタをデプロイしてみる的ななにか
RancherでMesosクラスタをデプロイしてみる的ななにか
 
DBFluteを用いて開発されている全文検索システムFess
DBFluteを用いて開発されている全文検索システムFessDBFluteを用いて開発されている全文検索システムFess
DBFluteを用いて開発されている全文検索システムFess
 
Handlersocket 20140218
Handlersocket 20140218Handlersocket 20140218
Handlersocket 20140218
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
 
Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
 
VPとSPIDERを使ったMySQL運用
VPとSPIDERを使ったMySQL運用VPとSPIDERを使ったMySQL運用
VPとSPIDERを使ったMySQL運用
 
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
Sfstudy#2チーム5
Sfstudy#2チーム5Sfstudy#2チーム5
Sfstudy#2チーム5
 
Elasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFessElasticsearchベースの全文検索システムFess
Elasticsearchベースの全文検索システムFess
 
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS  - OpenStack最新情報セミナー 2015年2月OpenStackを一発でデプロイ – Juju/MAAS  - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
 
オフィスに1台!全文検索Fess
オフィスに1台!全文検索Fessオフィスに1台!全文検索Fess
オフィスに1台!全文検索Fess
 
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
localstackによるAWS Lambdaの開発環境を、miniconda上でつくったら簡単便利だった話
 

Similaire à hs_spider_hs_something_20110906

Hadoopの紹介
Hadoopの紹介Hadoopの紹介
Hadoopの紹介
bigt23
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
SORACOM, INC
 
Handlersocket etc. 20110906
Handlersocket etc. 20110906Handlersocket etc. 20110906
Handlersocket etc. 20110906
akirahiguchi
 

Similaire à hs_spider_hs_something_20110906 (20)

オライリーセミナー Hive入門 #oreilly0724
オライリーセミナー Hive入門  #oreilly0724オライリーセミナー Hive入門  #oreilly0724
オライリーセミナー Hive入門 #oreilly0724
 
Hadoopの紹介
Hadoopの紹介Hadoopの紹介
Hadoopの紹介
 
Kinesis3 notes
Kinesis3 notesKinesis3 notes
Kinesis3 notes
 
これから始める Azure の基礎サービス: IaaS/PaaS
これから始める Azure の基礎サービス: IaaS/PaaSこれから始める Azure の基礎サービス: IaaS/PaaS
これから始める Azure の基礎サービス: IaaS/PaaS
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 
【ウェブセミナー】マネージドな 100% OSS アナリティクス プラットフォーム HDInsight の最新事情
【ウェブセミナー】マネージドな 100% OSS アナリティクス プラットフォーム HDInsight の最新事情【ウェブセミナー】マネージドな 100% OSS アナリティクス プラットフォーム HDInsight の最新事情
【ウェブセミナー】マネージドな 100% OSS アナリティクス プラットフォーム HDInsight の最新事情
 
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
 
Azure Datalake 大全
Azure Datalake 大全Azure Datalake 大全
Azure Datalake 大全
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたAwsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
 
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~
 
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoop
 
141030ceph
141030ceph141030ceph
141030ceph
 
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化
[CWT2017]Infrastructure as Codeを活用したF.O.Xのクラウドビッグデータ環境の変化
 
Handlersocket etc. 20110906
Handlersocket etc. 20110906Handlersocket etc. 20110906
Handlersocket etc. 20110906
 
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますElixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 

Plus de Kentoku

Mroonga 20121129
Mroonga 20121129Mroonga 20121129
Mroonga 20121129
Kentoku
 
Mroonga unsupported feature_20111129
Mroonga unsupported feature_20111129Mroonga unsupported feature_20111129
Mroonga unsupported feature_20111129
Kentoku
 
Introducing mroonga 20111129
Introducing mroonga 20111129Introducing mroonga 20111129
Introducing mroonga 20111129
Kentoku
 
Advanced Sharding Techniques with Spider (MUC2010)
Advanced Sharding Techniques with Spider (MUC2010)Advanced Sharding Techniques with Spider (MUC2010)
Advanced Sharding Techniques with Spider (MUC2010)
Kentoku
 

Plus de Kentoku (17)

An issue of all slaves stop replication
An issue of all slaves stop replicationAn issue of all slaves stop replication
An issue of all slaves stop replication
 
How to migrate_to_sharding_with_spider
How to migrate_to_sharding_with_spiderHow to migrate_to_sharding_with_spider
How to migrate_to_sharding_with_spider
 
Using spider for sharding in production
Using spider for sharding in productionUsing spider for sharding in production
Using spider for sharding in production
 
MariaDB ColumnStore 20160721
MariaDB ColumnStore 20160721MariaDB ColumnStore 20160721
MariaDB ColumnStore 20160721
 
Sharding with spider solutions 20160721
Sharding with spider solutions 20160721Sharding with spider solutions 20160721
Sharding with spider solutions 20160721
 
Mroonga 20141129
Mroonga 20141129Mroonga 20141129
Mroonga 20141129
 
Mroonga 20131129
Mroonga 20131129Mroonga 20131129
Mroonga 20131129
 
Newest topic of spider 20131016 in Buenos Aires Argentina
Newest topic of spider 20131016 in Buenos Aires ArgentinaNewest topic of spider 20131016 in Buenos Aires Argentina
Newest topic of spider 20131016 in Buenos Aires Argentina
 
Mroonga 20121129
Mroonga 20121129Mroonga 20121129
Mroonga 20121129
 
Mroonga unsupported feature_20111129
Mroonga unsupported feature_20111129Mroonga unsupported feature_20111129
Mroonga unsupported feature_20111129
 
Introducing mroonga 20111129
Introducing mroonga 20111129Introducing mroonga 20111129
Introducing mroonga 20111129
 
Spider HA 20100922(DTT#7)
Spider HA 20100922(DTT#7)Spider HA 20100922(DTT#7)
Spider HA 20100922(DTT#7)
 
Charms of MySQL 20101206(DTT#7)
Charms of MySQL 20101206(DTT#7)Charms of MySQL 20101206(DTT#7)
Charms of MySQL 20101206(DTT#7)
 
Introducing Spider 20101206(DTT#7)
Introducing Spider 20101206(DTT#7)Introducing Spider 20101206(DTT#7)
Introducing Spider 20101206(DTT#7)
 
Advanced Sharding Techniques with Spider (MUC2010)
Advanced Sharding Techniques with Spider (MUC2010)Advanced Sharding Techniques with Spider (MUC2010)
Advanced Sharding Techniques with Spider (MUC2010)
 
Spider Performance Test(Bench Mark04242009)
Spider Performance Test(Bench Mark04242009)Spider Performance Test(Bench Mark04242009)
Spider Performance Test(Bench Mark04242009)
 
Spider Shibuya.pm #12
Spider Shibuya.pm #12Spider Shibuya.pm #12
Spider Shibuya.pm #12
 

hs_spider_hs_something_20110906