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」をご確認下さい。

2009年8月22日

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

Spiderストレージエンジンのバージョン 2.0(beta)をリリースしました。
http://spiderformysql.com/
これ以降は、1.xが安定版、2.xが開発版となります。

今回の主な変更は以下です。
・テーブルパラメータに「semi_table_lock_connection」を追加しました。
・サーバパラメータに「spider_semi_table_lock_connection」を追加しました。
 Spiderストレージエンジンには、ローカルサーバで実行される1SQLの間のリモートサーバでの参照一貫性を担保するため、トランザクション対応のテーブルでは「spider_semi_trx」「spider_semi_trx_isolation」、トランザクション非対応のテーブルでは「spider_semi_table_lock」「semi_table_lock」というオプションが用意されています。しかし「semi_table_lock」はリモートサーバにlock tableを実行しトランザクションを暗黙でコミットしてしまうため、同じリモートサーバにトランザクション対応のテーブルとトランザクション非対応のテーブルが混在する場合は、ローカルサーバからリモートサーバにリンクを作成する際に、トランザクション対応テーブル用のコネクションとトランザクション非対応テーブルのコネクションが別のコネクションを利用するようにする必要があります。
 「semi_table_lock_connection」「spider_semi_table_lock_connection」を利用すると、同じ接続情報を持つテーブルでも「semi_table_lock」を利用するかどうかで利用する接続を分けることができます。

それ以外の変更については、ダウンロードドキュメント中の「99_change_logs.txt」をご確認下さい。

2009年8月18日

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

Spiderストレージエンジンのバージョン 1.0をリリースしました。
このバージョンからGAとなります。
http://spiderformysql.com/

今回からLinux x86_64用の共有ライブラリをリリースしています。
リリースにあたっては、以下の記事を参考にさせていただきました。
http://d.hatena.ne.jp/kazuhooku/20080831/1220144671
kazuhoさんありがとうございます。

それ以外の変更については、ダウンロードドキュメント中の「99_change_logs.txt」をご確認下さい。

2009年8月15日

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

Spiderストレージエンジンのバージョン 0.18をリリースしました。
http://spiderformysql.com/

今回の主な変更は以下です。
・テーブルパラメータに「use_pushdown_udf」を追加しました。
・サーバパラメータに「spider_use_pushdown_udf」を追加しました。
 「use_pushdown_udf」「spider_use_pushdown_udf」は、engine_condition_pushdown利用時、where句で利用したUDFをリモートサーバに発行するSQLの検索条件に加えるかどうかを設定することができます。

今回からテーブルパラメータの空白として、改行が利用できるようになりました。
藤尾さん、ご報告ありがとうございます。

それ以外の変更については、ダウンロードドキュメント中の「99_change_logs.txt」をご確認下さい。

2009年8月11日

[MySQL]グリー勉強会「MySQLハッキングの手引き」

 グリー勉強会「MySQLハッキングの手引き」に参加してきました。
 グリーさん、松信さん、いちいさんありがとうございました。
 細かい内容は、他の方が既に説明されているのでそちらを見ていただくとして、感想としては、非常に創作意欲を刺激される内容でした。

 Spiderでは、リモートサーバのストアドプロシージャ、ストアドファンクションなどの資源を利用するためのUDFの作成を「作らないといけないなー」レベルでなんとなく予定していたのですが、今回の勉強会の影響で完成が早まるかもしれません。
 プロジェクトも登録してみました。
 http://forge.mysql.com/projects/project.php?id=349

 ご期待下さい。

2009年8月9日

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

Spiderストレージエンジンのバージョン 0.17をリリースしました。
このバージョンからRCとなります。
http://spiderformysql.com/

今回の主な変更は以下です。
・テーブルパラメータに「use_table_charset」を追加しました。
・サーバパラメータに「spider_use_table_charset」「spider_local_lock_table」を追加しました。
 「use_table_charset」「spider_use_table_charset」は、リモートサーバとの通信をテーブルのキャラクターセットで行うか、UTF8固定にするかを切り替えることができます。基本的にデフォルト(通信をテーブルのキャラクターセットで行う)のままで問題はありませんが、SQLの中のデータの長さよりもカラムやテーブルの文字列のほうが極端に長くなるような場合には、この設定を変更することで性能が向上することがあります。
 「spider_local_lock_table」は、lock tableを行った際に、リモートにlock tablesを発行するかどうかを切り替えるパラメータです。このオプションは、無停止でデータの再分配を行う場合などのケースで変更します。

それ以外の変更については、ダウンロードドキュメント中の「99_change_logs.txt」をご確認下さい。

2009年8月1日

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

Spiderストレージエンジンのバージョン 0.16をリリースしました。
http://spiderformysql.com/

今回の主な変更は以下です。
・サーバパラメータに「spider_same_server_link」「spider_table_init_error_interval」を追加しました。
 「spider_same_server_link」は、同じMySQLにテーブルリンクを作成したい場合に利用します。
 「spider_table_init_error_interval」は、誤ってテーブルリンクをループさせてしまった場合に、コネクションを消費し続ける問題を抑止するために利用します。もし、テーブルリンクがループした際に、コネクションが増加し続ける場合はset globalコマンドを利用してこのパラメータを大きくしてください。

それ以外の変更については、ダウンロードドキュメント中の「99_change_logs.txt」をご確認下さい。