spiderの最新動向 20130419

32
MySQLプラグイン:Spiderストレージエンジンの 機能のご紹介と最新動向 チームラボ株式会社 斯波健徳

Upload: kentoku

Post on 25-May-2015

2.985 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Spiderの最新動向 20130419

MySQLプラグイン:Spiderストレージエンジンの

機能のご紹介と最新動向

チームラボ株式会社

斯波健徳

Page 2: Spiderの最新動向 20130419

Spiderストレージエンジンとは?

Spiderストレージエンジンは、

MySQLのプラグインで、

別のサーバにあるテーブルもしくはビューを、

ローカルのDBにあるテーブルもしくは

パーティションとして利用できる機能を

提供します。

Page 3: Spiderの最新動向 20130419

Spiderストレージエンジンの用途

Spiderを利用すると

大量のデータを複数サーバに分散させて

①大量のトラフィックを処理したり(DBシャーディング)

②並列処理したり(パラレル処理)

することができるようになります。

また、複数の別々のアプリケーションで利用しているDBを

③1つのDBとして利用することも可能

になります。

Page 4: Spiderの最新動向 20130419

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つのデータベースに接続すれば、他のデータベースを意識せずに利用できる。

AP AP AP AP

Page 5: Spiderの最新動向 20130419

Spiderの使い方 (1/4)

①SpiderがバンドルされたMySQLを

インストール

②MySQLにログインし、

Spiderをプラグインとしてインストール

(install_spider.sqlを実行)

③テーブルを作成

Page 6: Spiderの最新動向 20130419

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

Page 7: Spiderの最新動向 20130419

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

Page 8: Spiderの最新動向 20130419

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"';

のように利用することができます。

Page 9: Spiderの最新動向 20130419

Spiderのその他の機能と、

Version 3.0で追加された新機能のご紹介

Page 10: Spiderの最新動向 20130419

Spiderのその他の機能

冗長化機能

テーブル・パーティションの単位で冗長度を設定可能

耐障害性機能

Spider標準のものだけではなく、MySQLで利用可能な

他のソリューションが利用可能

全文検索・位置情報検索対応機能

バックエンドのMySQLの全文検索・位置情報検索

機能がそのまま利用可能

NoSQL対応機能

handlersocketに対応

Page 11: Spiderの最新動向 20130419

OracleDB接続対応

今回、OracleDBをデータノードとして利用できるように

なるわけですが、今回の機能追加を機に、以下の

ようなことができればと考えています。

①OracleDBを使ったシステムのサブシステムで

MySQLを利用する

②分割マイグレーションを行う

③データの相互利用を行う

①と③は、比較的想定しやすいので、ここでは

②についてもう少し詳しくお話したいと思います。

Page 12: Spiderの最新動向 20130419

分割マイグレーション

分割マイグレーションとは、システムの

マイグレーションを1回ではなく分割して

実施する移行手法で、移行の過程で、

旧システムと新システムが共存する

期間があるのが特徴です。

Page 13: Spiderの最新動向 20130419

分割マイグレーションのメリット

・移行結果を段階的に確認できるため、

定期的に状況分析を行いやすく、リスクの

細分化ができる。

・移行単位を分割することにより、リリースの

優先度付けができるため、期間あたりの

開発ボリュームを調整しやすい。

・システムの全てを漏れなく把握しなくても、

作業を開始することができる。

・アジャイルや反復型の開発手法を導入しやすい。

Page 14: Spiderの最新動向 20130419

SPIDER (MySQL)

分割マイグレーション フェーズ1

移行元DB

tbl_a

MySQLからSpider経由で、移行元DBのテーブルを利用する

AP AP

更新+参照

参照

移行元DBに接続するアプリケーションが更新+参照

MySQLに接続するアプリケーションが参照のみを行うテーブル

※移行のフェーズは、テーブル

単位で細かく設計できるので、

柔軟な移行設計が可能です。

参照

Page 15: Spiderの最新動向 20130419

SPIDER (MySQL)

分割マイグレーション フェーズ2

移行元DB

tbl_a

MySQLからSpider経由で、移行元DBのテーブルを利用する

AP AP

更新+参照

更新+参照

移行元DBに接続するアプリケーションが更新+参照

MySQLに接続するアプリケーションが更新+参照を行うテーブル

更新+参照

Page 16: Spiderの最新動向 20130419

SPIDER (MySQL)

分割マイグレーション フェーズ3

移行元DB

tbl_a

Spiderの冗長化機能、もしくはVP(後述)を利用して

移行元、MySQL双方のテーブルを更新する

AP AP

参照

更新+参照

移行元DBに接続するアプリケーションが参照

MySQLに接続するアプリケーションが更新+参照を行うテーブル

MySQL

tbl_a

更新+参照 更新

・新アプリのデプロイ

・旧更新アプリの停止

・新DBへテーブル作成

・Spiderの定義変更と

データコピー

Page 17: Spiderの最新動向 20130419

分割マイグレーション フェーズ4

移行元DB

移行完了

AP

更新+参照

移行元DBに接続するアプリケーションが利用せず

MySQLに接続するアプリケーションが更新+参照を行うテーブル

MySQL

tbl_a

AP

Page 18: Spiderの最新動向 20130419

これらの分割マイグレーションは、

基本的にシステム無停止での

実施が可能です

Page 19: Spiderの最新動向 20130419

Spiderと組み合わせることが多い、

その他のプラグインのご紹介

Page 20: Spiderの最新動向 20130419

1. Vertical Partitioning Storage Engine

2. Handlersocket Plugin

3. Mroonga Storage Engine

その他のプラグイン

Page 21: Spiderの最新動向 20130419

Vertical Partitioning Storage Engine

Vertical Partitioning (VP) Storage Engineの

主な特徴

1. カラムレベルの分割

2. 1対1リレーションでjoinしたVIEWに近い動作で、

元となるテーブル(子テーブル)への直接アクセスも

可能。ただし、VIEWとは異なり完全にテーブルとして

利用可能で、INSERTなども実行できる

3. 行レベルパーティショニングの分割条件を、状況に

応じて使い分けたい場合に利用可能

4. 子テーブル間のオンラインデータコピーをサポート

Page 22: Spiderの最新動向 20130419

1. Vertical Partitioning Storage Engine

2. Handlersocket Plugin

3. Mroonga Storage Engine

その他のプラグイン

Page 23: Spiderの最新動向 20130419

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

Page 24: Spiderの最新動向 20130419

1. Vertical Partitioning Storage Engine

2. Handlersocket Plugin

3. Mroonga Storage Engine

その他のプラグイン

Page 25: Spiderの最新動向 20130419

Mroonga Storage Engine (1/2)

Mroonga Storage Engineの主な特徴

1. 高速な全文検索

2. 高速な位置情報検索

3. 検索中でも高速に更新が可能

(ロックフリーモデル)

4. 日本語全文検索に対応

Page 26: Spiderの最新動向 20130419

Mroonga Storage Engine (2/2)

Mroonga Storage Engineの主な特徴

5. 他のストレージエンジンと組み合わせて、

全文検索と位置情報検索の機能を

付加することも可能

6. Spiderと組み合わせて、分散したデータへの

全文検索、位置情報検索が可能

Mroonga’s document is available.

http://mroonga.github.com/

Page 27: Spiderの最新動向 20130419

最新動向

Page 28: Spiderの最新動向 20130419

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/

Page 29: Spiderの最新動向 20130419

より快適に

これまでは、使いやすさよりも、とにかく「できること」に重点を置いた開発を

行ってきたのですが、ある程度その点には目処がたってきたこともあり、

このあたりで、スキーマを設計してから、分散環境の構築までの手順を

なるべく自動化できるようにするための機能の開発を予定しています。

その他のコンセプトとしては

①既存のスキーマ設計のツールが利用できる

②クラウドサービスで利用できる

③既に構築済みの環境にも使える

④既存の管理ツールとも連携できる

といったことを考えています。

提供時期はまだ未定ですが、なるべく早い段階でこちらの提供と利用方法を

ご紹介できるようにしたいと考えております。

なので、「快適スケールアウト勉強会」は次回に続きます。

Page 30: Spiderの最新動向 20130419

まとめ

Page 31: Spiderの最新動向 20130419

・ Spiderストレージエンジンを利用すると、

1つのデータベースに接続するだけで、

他のデータベースのテーブルを利用できる

ようになります。

・テーブルのデータが肥大化した場合には、

Spiderを使って、そのデータを複数の

データベースに分割して利用することが

できます。

まとめ

Page 32: Spiderの最新動向 20130419

http://spiderformysql.com

Kentoku SHIBA (kentokushiba [at] gmail [dot] com)

Any Questions?

You can see me later!

Come to visit me!!

ご清聴ありがとうございました!