Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Spiderストレージエンジンのご紹介 2019/05/21

Spiderストレージエンジンのご紹介 2019/05/21

 MariaDBの特徴的な機能の一つに、プラガブルストレージエンジンアーキテクチャというものがあります。
 これは、テーブルごとに、その用途を踏まえて異なるストレージエンジンを選択できるというもので、例えばあるテーブルをメモリのみの揮発性のテーブルにしたり、またあるテーブルをトランザクションに関与しないテーブル(トランザクションの結果がどうあれ更新が反映されるため、ログなどを残しておくことができます)にしたりするといったことができます。
 こういったストレージエンジンのひとつにSpiderストレージエンジンというものがあり、これをテーブルに利用すると他の複数のデータベースにデータを分散して格納することができるようになります。
 今回は、このSpiderストレージエンジンを簡単にご紹介させて頂きます。

Kentoku SHIBA

May 21, 2019
Tweet

More Decks by Kentoku SHIBA

Other Decks in Technology

Transcript

  1. 1. Spiderはどういったところで使われているか? 2. Spiderで何ができるようになるのか? 3. Spiderストレージエンジンとは? 4. どういう場合にSpiderを使うのか? 5. Spiderのシャーディングの仕組み

    6. Spiderのセットアップ 7. VPストレージエンジンとの組み合わせによる他次元シャーディング 8. Spiderのロードマップ 9. Spiderの入手方法 (VP含む) アジェンダ
  2. 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)
  3. よくある シャーディング ソリューション よくあるシャーディングでのJOIN例 DB1 tbl_a1 1.リクエスト 2. JOINを含むSQLを実行 3.レスポンス

    DB2 AP 必ずJOINを行うためのテーブルが 1つのシャードに全て存在する必要がある。 AP AP AP AP tbl_a2 tbl_b1 tbl_b2
  4. When SPIDER is right for you? What cases should you

    use SPIDER? Spiderは以下のような要件がある場合に、 利用をご検討ください。 3.任意のルールでシャーディングを行いたい 場合 4.シャーディングと一貫性が同時に必要である 場合
  5. 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
  6. 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
  7. 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
  8. 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に記載する。
  9. 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に記載する。
  10. 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"';
  11. http://mariadb.com Kentoku SHIBA (kentoku.shiba [at] mariadb [dot] com) Any Questions?

    You can see me later! Come to visit me!! ご清聴ありがとうございました!