読者です 読者をやめる 読者になる 読者になる

プログラマでありたい

おっさんになっても、プログラマでありつづけたい

どうなるMySQL。オラクルがサンを買収

 家に帰ってからPC開けてびっくりしました。
【速報】オラクルが74億ドルでサンを買収

 米オラクルは2009年4月20日、サン・マイクロシステムズ買収に向けた合意に達したと発表した。サン・マイクロシステムズの株主の承認や当局の認可、条件の最終調整を経て、買収提案は成立する見込み。買収完了まで2社はそれぞれ独立して経営を継続する。オラクルは1株あたり9.5ドルでサン・マイクロシステムズの普通株を取得する。買収額はおよそ74億ドル。

 OracleがSunを買収!!
確かにOracleの視点から考えれば、組み合わせ的には文句なしかもしれません。一方、ウォール街から見たら単なる衰退企業同士の組み合わせでそれほど興味が無いかもしれません。が、技術者からみたらその組み合わせだけは止めてくれと思います。
 Sunの買収自体はどうでも良いのですよ。問題はSunの下にMySQLがあることです。過去にOracleはMySQLのストレージエンジンの一つのInnoDBを買収して、MySQLへ牽制をしていました。今度はど真ん中直球です。うーん。これでMySQLの進化は鈍っていくのではないでしょうかね?既にMySQLの生みの親のMontyもSunを去っていることもありますし。。。


 Oracleとしては、MySQLの勢いを止めるだけでも買収は成功なんかもしれませんね。対抗馬のオープンソースのDBといえばPostgresですが、方向性が微妙ですしね。(Oracle cloneを作りたいのか?)うーん、後はFirebirdか。何となくコネクタとかのサポートが少ないんですよね。今後はどうなるんでしょうか。脱RDBSの方向かな。


 ついでにMySQLについての蘊蓄を語っておくと、最大の特徴はSQLエンジンのデータストレージエンジンが分離していることだと思います。SQLエンジン部分でSQLの解析を行って、データストレージエンジンに実際の処理を投げます。このデータストレージエンジンを用途別に使い分けることが出来るのが、MySQLの強みでしょう。
 データストレートエンジンって何と思うと人もいると思いますが、Create table文の最後に付けるengineオプションです。MySQLは早いって紹介される時は大抵MyISAMのことを指しているでしょうし、トランザクションもサポートしていますって時はInnoDBのことを指していると思います。このように用途によって使い分けることが出来るのが良い所だと思います。

代表的なデータストレージエンジンとその特徴
・MyIsam
 検索の速さに血道をあげているストレージです。参照系のパフォーマンスは、かなり高いです。またテーブル単位にファイルを作成しているので、一つの巨大なテーブルの為に他のテーブルのパフォーマンスが悪くなるといったことは起こりえません。また、どうでも良い事ですが、Truncateがクソ速いです。(たぶんrmしてるだけだから)
 その代わりに犠牲にしている物も多くあります。一番代表的なのは、トランザクションをサポートしていないことです。次にロックがテーブルロックしかサポートしていないことがあります。しかもWriteロックがReadロックに割り込むので、 更新が多発するテーブルでMyISAMを使うと大変なことになります。またデータ取得のオーバヘッドが大きいのか、1件取得は速いが大量のデータを取得する処理はInnoDBより遅かったりします。
 そんなツンデレなデータストレージエンジンですが、手軽に使えるので用途を間違えなければとても便利です。ちなみにMySQLとMyISAMの名前の由来は、開発者のMontyの長女の名前(My)


・InnoDB
 innoBaseという会社が作っていたエンジン。MySQLはこれを取り込むことによりトランザクションをサポートすることが出来るようになりました。またロックも行レベルで行えるし、WriteロックとReadロックは独立しているので更新が多発する場合でも安心して使えます。器用な反面、速度が遅いという泣き所がありました。これも地道な努力で、最近では部分的にMyISAMを凌駕する場面も出て来ています。
 個人的な感覚では、InnoDBが使えるようになってから一気にMySQLが日本でも使われるようになったように思えます。しかし、Oracleに買収されてから音沙汰を余り聞かなくなりました。ちなみに買収されたといってもinnoBaseという会社、元々数人の会社だったようです。


・Memory
 その名の通り、メモリーに乗っけるデータストレージエンジンです。当然、DBを再起動したら内容はパァです。また完全にメモリー上だけで処理されるかというとそうではなく、ディスク上のテンポラリーテーブルを使用することもあります。こうならない為に、使い方にはノウハウがいります。
 上記のように、エンジニア魂を揺り動かすデータストレージエンジンです。


・Falcon
 OracleによるInnoDB買収を受けて、対抗策というか予防策としてMySQLが開発を宣言したのがこのデータストレージエンジン。が、未だに日の目を見ていないような。。。


・Maria
 Montyが新たに開発を宣言したデータストレージエンジン。究極の速さを追求しているという噂だが。。。ちなみに名前の由来は、Montyの次女の名前


まぁ、これ以外にも色々とデータストレージエンジンはあります。そこがプラガブルストレージエンジンの良い所です。