31
MySQLプラグイン:Spiderストレージエンジンの 機能のご紹介と最新動向 チームラボ / スパイラルアーム 斯波健徳

Spiderの最新動向 20131009

  • Upload
    kentoku

  • View
    751

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Spiderの最新動向 20131009

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

機能のご紹介と最新動向

チームラボ / スパイラルアーム

斯波健徳

Page 2: Spiderの最新動向 20131009

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

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

MySQL/MariaDBのプラグインで、

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

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

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

提供します。

MariaDB 10.0.4から、標準でバンドル

されています。

Page 3: Spiderの最新動向 20131009

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

Spiderを利用すると

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

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

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

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

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

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

になります。

Page 4: Spiderの最新動向 20131009

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の最新動向 20131009

Spiderの使い方 (1/5)

①Spiderがバンドルされた

MySQL/MariaDBをインストール

②MySQLにログインし、

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

(install_spider.sqlを実行)

③テーブルを作成

Page 6: Spiderの最新動向 20131009

Spiderの使い方 (2/5)

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の最新動向 20131009

Spiderの使い方 (3/5)

MariaDBだと、Spiderテーブルを作成する場合にカラムの

情報を省略しても、データノードの定義を引き継いで、

テーブルが作成されます。

CREATE TABLE t1

ENGINE=spider DEFAULT CHARSET=utf8

COMMENT '

table "rt1", database "test", port "3306",

host "データノードのホスト名",

user "データノードログイン用ユーザ名",

password "パスワード"

‘;

Page 8: Spiderの最新動向 20131009

Spiderの使い方 (4/5)

分割(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 9: Spiderの最新動向 20131009

Spiderの使い方 (5/5)

これらの接続情報は、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 10: Spiderの最新動向 20131009

Spiderのその他の機能のご紹介

Page 11: Spiderの最新動向 20131009

Spiderのその他の機能

冗長化機能

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

耐障害性機能

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

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

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

(パーティションを利用した場合MariaDB未)

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

機能がそのまま利用可能

Page 12: Spiderの最新動向 20131009

Spiderのその他の機能

NoSQL対応機能(MariaDB未)

handlersocketに対応

OracleDB接続機能

データノードとしてOracleDBを利用できる機能です。

※ソースコードからのビルドが必要です。

パラレル検索機能(MariaDB未)

shardingされているテーブルの検索時、

複数shardに対して並列に検索を行う機能です。

Page 13: Spiderの最新動向 20131009

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

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

Page 14: Spiderの最新動向 20131009

1. Vertical Partitioning Storage Engine

2. Handlersocket Plugin

3. Mroonga Storage Engine

その他のプラグイン

Page 15: Spiderの最新動向 20131009

Vertical Partitioning Storage Engine

Vertical Partitioning (VP) Storage Engineの

主な特徴

1. カラムレベルの分割

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

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

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

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

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

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

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

Page 16: Spiderの最新動向 20131009

1. Vertical Partitioning Storage Engine

2. Handlersocket Plugin

3. Mroonga Storage Engine

その他のプラグイン

Page 17: Spiderの最新動向 20131009

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 18: Spiderの最新動向 20131009

1. Vertical Partitioning Storage Engine

2. Handlersocket Plugin

3. Mroonga Storage Engine

その他のプラグイン

Page 19: Spiderの最新動向 20131009

Mroonga Storage Engine (1/2)

Mroonga Storage Engineの主な特徴

1. 高速な全文検索

2. 高速な位置情報検索

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

(ロックフリーモデル)

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

Page 20: Spiderの最新動向 20131009

Mroonga Storage Engine (2/2)

Mroonga Storage Engineの主な特徴

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

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

付加することも可能

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

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

Mroonga’s document is available.

http://mroonga.github.com/

Page 21: Spiderの最新動向 20131009

最新動向

Page 22: Spiderの最新動向 20131009

MariaDBへのバンドル

MariaDB 10.0.4でバンドルされました。

Mroongaもバンドル目指して頑張っているところです。

ただし、現在のところMariaDB本体に変更が必要な機能、

他のストレージエンジンと組み合わせることで実現できる

機能などは、まだMariaDBでは利用できないものもあり、

現在それらを利用できるように対応中です。

Page 23: Spiderの最新動向 20131009

地味だけど重要な改善

1. spider_bka_mode=2 BatchedKeyAccessというjoinを最適化する機能があり、

これはその際の最適化(一部他のケースでも利用される)の方式を

決めるオプションなのですが、spider_bka_mode=1では、

レプリケーション(Amazon RDSの場合はリードレプリカ)を利用すると

レプリケーション遅延が発生しやすくなる特性があったため、

spider_bka_mode=2を追加し、それを解消しました。

2.集計関数の最適化 joinと集計関数の中にdistinctがない場合、COUNT、MAX、MIN、SUMが

高速化しました。

Page 24: Spiderの最新動向 20131009

地味だけど重要な改善

3. log_result_errors 、 spider_log_result_errors 、

spider_general_log(パラメータ)、

spider_xa_failed_log(テーブル)

ログ関係の改善です。Spiderがデータノードに発行したSQLを

確認したり、Spiderがデータノードから受け取ったエラー、MySQLが

アプリケーションに返したエラーをロギングしたり、データノードへの

XAトランザクションが失敗した場合に、どのデータノードのものが

失敗したのかなどをログとして確認し、障害解析、復旧に役立てることが

できるようになりました。

なお、パラメータはすべて動的に変更できますので、サービス中に

一時的にログを出力するような利用も可能です。

Page 25: Spiderの最新動向 20131009

より快適に

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

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

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

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

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

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

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

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

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

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

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

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

Page 26: Spiderの最新動向 20131009

MariaDB Foundationについて

Page 27: Spiderの最新動向 20131009

MariaDB Foundationについて

MariaDB Foundationは、現在のMariaDBの開発母体です。

MariaDB Foundationはコミュニティと連携しながら運営されているのですが、

まだまだいろいろ議論しないといけないことがあるようです。

ですのでみなさん、この議論に参加して、

・ここはこうした方がいいんじゃないか?

・これはおかしいんじゃない?

・これってどうなってるんだっけ?

といったことがあれば、どんどん発言して頂ければと思います。

Page 28: Spiderの最新動向 20131009

MariaDB Foundationについて

議論のためのMLはこちらです。

[email protected]

このMLに参加するには、

https://login.launchpad.net/+new_account

で、launchpadにアカウントを登録し、

https://launchpad.net/~maria-discuss

で、MLに参加を行います。

※launchpadは、フリーソフトウェアの開発の為の

プロジェクトホスティングサービスです。(感謝)

Page 29: Spiderの最新動向 20131009

まとめ

Page 30: Spiderの最新動向 20131009

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

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

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

ようになります。

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

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

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

できます。分割構成の設計の自由度が

高いのが特徴です。

まとめ

Page 31: Spiderの最新動向 20131009

http://spiderformysql.com

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

Any Questions?

You can see me later!

Come to visit me!!

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