Spiderストレージエンジンのバージョン 2.1(beta)をリリースしました。
http://spiderformysql.com/
今回の主な変更は以下です。
・UDF「spider_direct_sql」「spider_bg_direct_sql」を追加しました。
これらのUDFは、Spiderのテーブルリンクを利用して、リモートサーバに任意のSQLを発行し、結果セットがある場合はテンポラリテーブルに格納するというものです。
主な用途としては以下を想定しています。
1.メンテナンス用(他のサーバにSpiderのリンク先のテーブルを
作成したりする)
2.リモートサーバのテーブル以外の資源(ストアドプロシージャ、
ストアドファンクション)の利用用
3.大量データの一括更新用(全レコードを1SQLで更新する
ような場合。複数のリモートサーバで並列更新ができる
ということと、ローカルサーバとリモートサーバのデータ
転送量を削減できるというメリットがある)
4.2ステップ集計処理用(DWHなどで、大量データの集計を行う
場合に、リモートサーバでまず一次集計を行い、その集計結果を
各リモートサーバからローカルサーバに集め、さらに集計する。
一次集計をパラレルで行えるということと、ローカルサーバと
リモートサーバのデータ転送量を削減できるというメリットが
ある)
2ステップ集計の例
(7つのリモートサーバに分割されたテーブルのレコード数をカウントする)
-------------------------------------------------------------------------------
準備:
mysql> create table target_hosts (host char(17))engine=myisam;
Query OK, 0 rows affected (0.01 sec)
mysql> insert into target_hosts (host) values ('192.168.22.13'),('192.168.22.14'),('192.168.22.15'),('192.168.22.16'),('192.168.22.51'),('192.168.22.52'),('192.168.22.53');
Query OK, 7 rows affected (0.00 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> create temporary table a (a int)engine=myisam;
Query OK, 0 rows affected (0.00 sec)
実行:
mysql> select sum(a.a) from a, (select sum(spider_direct_sql('select count(*) from data01', 'a', concat('srv "s", host "', host, '"'))) cnt from target_hosts) c;
+-----------+
| sum(a.a) |
+-----------+
| 117641811 |
+-----------+
1 row in set (40.86 sec)
mysql> truncate table a;
Query OK, 0 rows affected (0.00 sec)
mysql> select sum(a.a) from a, (select spider_bg_direct_sql('select count(*) from data01', 'a', concat('srv "s", host "', host, '"')) cnt from target_hosts) c;
+-----------+
| sum(a.a) |
+-----------+
| 117641811 |
+-----------+
1 row in set (5.91 sec)
-------------------------------------------------------------------------------
それ以外の変更については、ダウンロードドキュメント中の「99_change_logs.txt」をご確認下さい。
0 件のコメント:
コメントを投稿