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.

Spiderの最新動向 20130419

4,542 views

Published on

  • Be the first to comment

Spiderの最新動向 20130419

  1. 1. MySQLプラグイン:Spiderストレージエンジンの 機能のご紹介と最新動向 チームラボ株式会社 斯波健徳
  2. 2. Spiderストレージエンジンとは? Spiderストレージエンジンは、 MySQLのプラグインで、 別のサーバにあるテーブルもしくはビューを、 ローカルのDBにあるテーブルもしくは パーティションとして利用できる機能を 提供します。
  3. 3. Spiderストレージエンジンの用途 Spiderを利用すると 大量のデータを複数サーバに分散させて ①大量のトラフィックを処理したり(DBシャーディング) ②並列処理したり(パラレル処理) することができるようになります。 また、複数の別々のアプリケーションで利用しているDBを ③1つのDBとして利用することも可能 になります。
  4. 4. SPIDER (MySQL) SPIDER (MySQL) Spiderの構成例 DB1 tbl_a 1.Request 2.Just connect to spider 3.Response DB2 tbl_b DB3 tbl_c AP SPIDER (MySQL) アプリケーションは、1つのデータベースに接続すれば、 他のデータベースを意識せずに利用できる。 APAP AP AP
  5. 5. Spiderの使い方 (1/4) ①SpiderがバンドルされたMySQLを インストール ②MySQLにログインし、 Spiderをプラグインとしてインストール (install_spider.sqlを実行) ③テーブルを作成
  6. 6. Spiderの使い方 (2/4) 1対1リンクテーブルなら CREATE TABLE t1( c1 int, c2 varchar(100), PRIMARY KEY(c1) )ENGINE=spider DEFAULT CHARSET=utf8 COMMENT ' table "rt1", database "test", port "3306", host "データノードのホスト名", user "データノードログイン用ユーザ名", password "パスワード" '; ストレージエンジンにSpiderを指定し COMMENTに接続情報(パラメータ)を記述すればOK
  7. 7. Spiderの使い方 (3/4) 分割(sharding)テーブルなら CREATE TABLE t1( c1 int, c2 varchar(100), PRIMARY KEY(c1) )ENGINE=spider DEFAULT CHARSET=utf8 COMMENT 'table "rt1", database "test", port "3306", user "データノードログイン用ユーザ名", password "パスワード"' PARTITION BY RANGE(c1) ( PARTITION p0 VALUES LESS THAN (100000) COMMENT 'host "h1"', PARTITION p1 VALUES LESS THAN (200000) COMMENT 'host "h2"', PARTITION p2 VALUES LESS THAN (300000) COMMENT 'host "h3"', PARTITION p3 VALUES LESS THAN MAXVALUE COMMENT 'host "h4"' ); テーブルのCOMMENTに共通する接続情報、 各パーティションにパーティション固有の接続情報を記述すればOK
  8. 8. Spiderの使い方 (4/4) これらの接続情報は、CREATE SERVER構文を使ってあらかじめ 定義しておくこともでき CREATE SERVER srv1 FOREIGN DATA WRAPPER mysql HOST 'データノードのホスト名', DATABASE 'test', USER 'データノードログイン用ユーザ名', PASSWORD 'パスワード', PORT 3306 ; CREATE TABLE t1( c1 int, c2 varchar(100), PRIMARY KEY(c1) )ENGINE=spider DEFAULT CHARSET=utf8 COMMENT 'table "rt1", server "srv1"'; のように利用することができます。
  9. 9. Spiderのその他の機能と、 Version 3.0で追加された新機能のご紹介
  10. 10. Spiderのその他の機能 冗長化機能 テーブル・パーティションの単位で冗長度を設定可能 耐障害性機能 Spider標準のものだけではなく、MySQLで利用可能な 他のソリューションが利用可能 全文検索・位置情報検索対応機能 バックエンドのMySQLの全文検索・位置情報検索 機能がそのまま利用可能 NoSQL対応機能 handlersocketに対応
  11. 11. OracleDB接続対応 今回、OracleDBをデータノードとして利用できるように なるわけですが、今回の機能追加を機に、以下の ようなことができればと考えています。 ①OracleDBを使ったシステムのサブシステムで MySQLを利用する ②分割マイグレーションを行う ③データの相互利用を行う ①と③は、比較的想定しやすいので、ここでは ②についてもう少し詳しくお話したいと思います。
  12. 12. 分割マイグレーション 分割マイグレーションとは、システムの マイグレーションを1回ではなく分割して 実施する移行手法で、移行の過程で、 旧システムと新システムが共存する 期間があるのが特徴です。
  13. 13. 分割マイグレーションのメリット ・移行結果を段階的に確認できるため、 定期的に状況分析を行いやすく、リスクの 細分化ができる。 ・移行単位を分割することにより、リリースの 優先度付けができるため、期間あたりの 開発ボリュームを調整しやすい。 ・システムの全てを漏れなく把握しなくても、 作業を開始することができる。 ・アジャイルや反復型の開発手法を導入しやすい。
  14. 14. SPIDER (MySQL) 分割マイグレーション フェーズ1 移行元DB tbl_a MySQLからSpider経由で、移行元DBのテーブルを利用する AP AP 更新+参照 参照 移行元DBに接続するアプリケーションが更新+参照 MySQLに接続するアプリケーションが参照のみを行うテーブル ※移行のフェーズは、テーブル 単位で細かく設計できるので、 柔軟な移行設計が可能です。 参照
  15. 15. SPIDER (MySQL) 分割マイグレーション フェーズ2 移行元DB tbl_a MySQLからSpider経由で、移行元DBのテーブルを利用する AP AP 更新+参照 更新+参照 移行元DBに接続するアプリケーションが更新+参照 MySQLに接続するアプリケーションが更新+参照を行うテーブル 更新+参照
  16. 16. SPIDER (MySQL) 分割マイグレーション フェーズ3 移行元DB tbl_a Spiderの冗長化機能、もしくはVP(後述)を利用して 移行元、MySQL双方のテーブルを更新する AP AP 参照 更新+参照 移行元DBに接続するアプリケーションが参照 MySQLに接続するアプリケーションが更新+参照を行うテーブル MySQL tbl_a 更新+参照 更新 ・新アプリのデプロイ ・旧更新アプリの停止 ・新DBへテーブル作成 ・Spiderの定義変更と データコピー
  17. 17. 分割マイグレーション フェーズ4 移行元DB 移行完了 AP 更新+参照 移行元DBに接続するアプリケーションが利用せず MySQLに接続するアプリケーションが更新+参照を行うテーブル MySQL tbl_a AP
  18. 18. これらの分割マイグレーションは、 基本的にシステム無停止での 実施が可能です
  19. 19. Spiderと組み合わせることが多い、 その他のプラグインのご紹介
  20. 20. 1. Vertical Partitioning Storage Engine 2. Handlersocket Plugin 3. Mroonga Storage Engine その他のプラグイン
  21. 21. Vertical Partitioning Storage Engine Vertical Partitioning (VP) Storage Engineの 主な特徴 1. カラムレベルの分割 2. 1対1リレーションでjoinしたVIEWに近い動作で、 元となるテーブル(子テーブル)への直接アクセスも 可能。ただし、VIEWとは異なり完全にテーブルとして 利用可能で、INSERTなども実行できる 3. 行レベルパーティショニングの分割条件を、状況に 応じて使い分けたい場合に利用可能 4. 子テーブル間のオンラインデータコピーをサポート
  22. 22. 1. Vertical Partitioning Storage Engine 2. Handlersocket Plugin 3. Mroonga Storage Engine その他のプラグイン
  23. 23. Handlersocket Plugin Handlersocket (HS) Pluginの主な特徴 1. MySQLへの高速なNOSQLアクセスが可能 2. Spiderと組み合わせることで、複数サーバに 分散したデータへのNOSQLアクセスが可能 Handlersocket is developed by Akira Higuchi. https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL Patched version for Spider is bundled with Spider bundled MySQL. http://spiderformysql.com/download_spider.html
  24. 24. 1. Vertical Partitioning Storage Engine 2. Handlersocket Plugin 3. Mroonga Storage Engine その他のプラグイン
  25. 25. Mroonga Storage Engine (1/2) Mroonga Storage Engineの主な特徴 1. 高速な全文検索 2. 高速な位置情報検索 3. 検索中でも高速に更新が可能 (ロックフリーモデル) 4. 日本語全文検索に対応
  26. 26. Mroonga Storage Engine (2/2) Mroonga Storage Engineの主な特徴 5. 他のストレージエンジンと組み合わせて、 全文検索と位置情報検索の機能を 付加することも可能 6. Spiderと組み合わせて、分散したデータへの 全文検索、位置情報検索が可能 Mroonga’s document is available. http://mroonga.github.com/
  27. 27. 最新動向
  28. 28. MariaDBへのバンドル MariaDB 10.0へのバンドル作業中で、Spiderは現在レビューを 受けている段階です。 Mroongaも近々バンドルする予定です。 MariaDBは、MySQLのフォークであり、Monty Program ABという 会社で、Michael WideniusさんというMySQLを元々の作者を筆頭に、 MySQLよりもオープンな開発を目指して、開発が進められています。 Fedoraプロジェクトなどが、MySQLからMariaDBへ ディストリビューションの標準を変更するようです。 MySQLと違う部分が説明されている、Monty Program ABのページ。 https://kb.askmonty.org/en/mariadb-vs-mysql-compatibility/ https://kb.askmonty.org/en/mariadb-vs-mysql-features/
  29. 29. より快適に これまでは、使いやすさよりも、とにかく「できること」に重点を置いた開発を 行ってきたのですが、ある程度その点には目処がたってきたこともあり、 このあたりで、スキーマを設計してから、分散環境の構築までの手順を なるべく自動化できるようにするための機能の開発を予定しています。 その他のコンセプトとしては ①既存のスキーマ設計のツールが利用できる ②クラウドサービスで利用できる ③既に構築済みの環境にも使える ④既存の管理ツールとも連携できる といったことを考えています。 提供時期はまだ未定ですが、なるべく早い段階でこちらの提供と利用方法を ご紹介できるようにしたいと考えております。 なので、「快適スケールアウト勉強会」は次回に続きます。
  30. 30. まとめ
  31. 31. ・ Spiderストレージエンジンを利用すると、 1つのデータベースに接続するだけで、 他のデータベースのテーブルを利用できる ようになります。 ・テーブルのデータが肥大化した場合には、 Spiderを使って、そのデータを複数の データベースに分割して利用することが できます。 まとめ
  32. 32. http://spiderformysql.com Kentoku SHIBA (kentokushiba [at] gmail [dot] com) Any Questions? You can see me later! Come to visit me!! ご清聴ありがとうございました!

×