2009年8月29日

[MySQL][Spider]Spiderストレージエンジン 2.1リリース

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 件のコメント:

コメントを投稿