Slide 1

Slide 1 text

Spiderストレージエンジンのご紹介 MariaDB Corporation Kentoku SHIBA

Slide 2

Slide 2 text

1. Spiderはどういったところで使われているか? 2. Spiderで何ができるようになるのか? 3. Spiderストレージエンジンとは? 4. どういう場合にSpiderを使うのか? 5. Spiderのシャーディングの仕組み 6. Spiderのセットアップ 7. VPストレージエンジンとの組み合わせによる他次元シャーディング 8. Spiderのロードマップ 9. Spiderの入手方法 (VP含む) アジェンダ

Slide 3

Slide 3 text

Spiderはどんなところで使われているか?

Slide 4

Slide 4 text

Spiderはどんなところで使われているか? Siemens データ品質分析基盤として、Spiderが 利用されている。 3つのSpiderノード、4つのデータノードで 3か月あたり、2000億レコードを扱っている。

Slide 5

Slide 5 text

Spiderはどんなところで使われているか? Tencent Games オンラインゲームの基盤としてSpiderが 利用されている。 396のSpiderノード、2800のデータノードで 100TBのデータを扱っている。

Slide 6

Slide 6 text

Spiderで何ができるようになるのか?

Slide 7

Slide 7 text

SPIDER (MySQL/MariaDB) SPIDER (MySQL/MariaDB) Spiderで何ができるようになるのか? DB1 (MySQL/MariaDB) 1.リクエスト 2. 問い合わせを実行 3.レスポンス AP SPIDER (MySQL/MariaDB) アプリケーションは、1つのデータベースに接続するだけで、 大量のデータベースを意識せずに利用できる。 AP AP AP AP DB2 (MySQL/MariaDB) DB3 (MySQL/MariaDB)

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

ストレージエンジンとは? MariaDBの特徴のひとつで、データの格納 方式や検索方式などを選択できる機能。 テーブル単位で指定することができ、 オンメモリのテーブルを作成したり、ログ用に INSERTとデータの格納効率に特化した テーブルを作成したり、分析に特化した テーブルを作成したりすることができる。

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Spiderストレージエンジンとは? Spiderストレージエンジンは、 MariaDB/MySQLのプラグインであり、 データベースのシャーデングやプロキシを 実現するソリューションです。 テーブル作成する際にEngineにSpiderと 書くことで、Spiderテーブルを作成して 利用します。

Slide 12

Slide 12 text

Spiderストレージエンジンとは? Spiderテーブルは他のサーバにある MariaDB/MySQL/OracleDBのテーブルを あたかもそのデータベースにあるテーブルの ように利用することを可能にします。 また、複数サーバに分散されたテーブルを 1つのテーブルとして利用することも 可能にします。(データベースシャーディング)

Slide 13

Slide 13 text

Spiderストレージエンジンとは? SpiderはMariaDB 10.0.4から 標準でバンドルされています。

Slide 14

Slide 14 text

Spiderで何をするのか? フェデレーション Spiderを使って、他のサーバのテーブルを ローカルサーバのテーブルとして使うことが できます。 シャーディング Spiderを使って、巨大なテーブル、激しい トラフィックを複数のサーバに分散することが できます。

Slide 15

Slide 15 text

クロスシャードJOIN Spiderは、複数のサーバ(シャード)にまたがる Joinをサポートしています。

Slide 16

Slide 16 text

よくある シャーディング ソリューション よくあるシャーディングでのJOIN例 DB1 tbl_a1 1.リクエスト 2. JOINを含むSQLを実行 3.レスポンス DB2 AP 必ずJOINを行うためのテーブルが 1つのシャードに全て存在する必要がある。 AP AP AP AP tbl_a2 tbl_b1 tbl_b2

Slide 17

Slide 17 text

SpiderのシャーディングでのJOINの例 1.リクエスト 2. JOINを含むSQLを実行 3.レスポンス AP JOINを行うためのテーブルが 複数のシャードに存在してもJOINできる。 AP AP AP AP SPIDER (MySQL/MariaDB) DB1 tbl_a1 DB2 tbl_a2 tbl_b1 tbl_b2

Slide 18

Slide 18 text

JOINのプッシュダウン また、可能であればJOINのプッシュダウンも 行います。

Slide 19

Slide 19 text

JOINのプッシュダウンの例 1.リクエスト 2. JOINを含むSQLを実行 3.レスポンス AP JOINを行うためのテーブルが1つのシャードにまとまっている場合、 データノードで直接JOINを行う。 AP AP AP AP SPIDER (MySQL/MariaDB) DB1 tbl_a DB2 tbl_c tbl_b tbl_d

Slide 20

Slide 20 text

JOINのプッシュダウン 簡単なJOINで測定したところ2倍程度高速に なりました。 また、このJOINのプッシュダウンは、クエリに 集計関数が含まれている場合は、集計処理も データノードで実行されるため、データの 転送量が大幅に削減され、超高速になります。

Slide 21

Slide 21 text

どういう場合にSpiderを使うのか?

Slide 22

Slide 22 text

どういう場合にSpiderを使うのか? Spiderは以下のような要件がある場合に、 利用をご検討ください。 1.2つ以上の既存のサービスがあり、 機能追加などで、相互のサービスのデータを 利用する必要がある場合 2.巨大なデータや、激しいトラフィックを 分割する必要がある場合

Slide 23

Slide 23 text

When SPIDER is right for you? What cases should you use SPIDER? Spiderは以下のような要件がある場合に、 利用をご検討ください。 3.任意のルールでシャーディングを行いたい 場合 4.シャーディングと一貫性が同時に必要である 場合

Slide 24

Slide 24 text

Spiderのシャーディングの仕組み

Slide 25

Slide 25 text

Spiderのシャーディングの仕組み Spiderテーブルをパーティションテーブル として作成すると、各パーティションを 異なるサーバのテーブルを割り当てることで、 複数のサーバへのデータ分割 (シャーディング)を行うことができます。 この際に利用するパーティションは、 一般的なテーブルパーティションと同じ ルールが全て利用できます。

Slide 26

Slide 26 text

Sharding 1.request 2. Execute SQL 3.response AP Using table partitioning rules AP AP AP AP SPIDER (MariaDB/MySQL) DB1 tbl_a DB2 tbl_a DB3 tbl_a DB4 tbl_a

Slide 27

Slide 27 text

Spiderのシャーディングの仕組み 各シャードはSpiderの機能により、HAや ロードバランスの為に、複数のサーバで 冗長化を行うことができます。

Slide 28

Slide 28 text

Duplicating 1.request 2. Execute SQL 3.response AP Duplicating for each partitions AP AP AP AP SPIDER (MariaDB/MySQL) DB1 tbl_a DB2 tbl_a DB3 tbl_a DB4 tbl_a DB5 tbl_a Duplicating Duplicating

Slide 29

Slide 29 text

Spiderのシャーディングの仕組み 複数サーバへの更新は、Spiderの2フェーズ コミットによって、一貫性が担保されます。 CommitがSpider内部で2フェーズコミットに 変換されます。

Slide 30

Slide 30 text

Consistency 1.request 2. Execute SQL 3.response AP Using 2 phase commit AP AP AP AP SPIDER (MariaDB/MySQL) DB1 tbl_a DB2 tbl_a DB3 tbl_a DB4 tbl_a 2 phase commit

Slide 31

Slide 31 text

Spiderのセットアップ

Slide 32

Slide 32 text

Spiderのセットアップ (1/5) 1. Spiderがバンドルされた MariaDB/MySQLをインストール 2. MariaDB/MySQLにログインし、 Spiderをプラグインとして インストール (install_spider.sqlを実行) 3. Spiderテーブルを作成

Slide 33

Slide 33 text

Spiderのセットアップ(2/5) 1対1Spiderテーブルの作成 CREATE TABLE t1( c1 int, c2 varchar(100), PRIMARY KEY(c1) )ENGINE=spider DEFAULT CHARSET=utf8 COMMENT ' table "rt1", database "test", port "3306", host "host name of data node", user "user name for data node", password "password for data node" '; Engine名に“Spider”を指定し、接続情報とパラメータを Commentに記載する。

Slide 34

Slide 34 text

Spiderのセットアップ(3/5) MariaDBの場合は、カラムの情報を省略してSpiderテーブルを 作成することも可能です。その場合は、Spiderがデータノードから カラムの情報を取得して、定義として利用します。 CREATE TABLE t1 ENGINE=spider DEFAULT CHARSET=utf8 COMMENT ' table "rt1", database "test", port "3306", host "host name of data node", user "user name for data node", password "password for data node" ';

Slide 35

Slide 35 text

Spiderのセットアップ(4/5) 1対多(シャーディング)Spiderテーブルの作成 CREATE TABLE t1( c1 int, c2 varchar(100), PRIMARY KEY(c1) )ENGINE=spider DEFAULT CHARSET=utf8 COMMENT 'table "rt1", database "test", port "3306", user "user name for data node", password "password for data node"' 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に記載する。 シャード毎に異なる接続情報をパーティションのCommentに記載する。

Slide 36

Slide 36 text

Spiderのセットアップ(5/5) “CREATE SERVER”コマンドで接続情報を事前に定義することも可能です。 CREATE SERVER srv1 FOREIGN DATA WRAPPER mysql HOST 'host name of data node', DATABASE 'test', USER 'user name for data node', PASSWORD 'password for data node', PORT 3306 ; 上記で定義したサーバ定義は、SpiderではCommentに“server”パラメータ として記述することができます。 CREATE TABLE t1( c1 int, c2 varchar(100), PRIMARY KEY(c1) )ENGINE=spider DEFAULT CHARSET=utf8 COMMENT 'table "rt1", server "srv1"';

Slide 37

Slide 37 text

http://mariadb.com Kentoku SHIBA (kentoku.shiba [at] mariadb [dot] com) Any Questions? You can see me later! Come to visit me!! ご清聴ありがとうございました!