未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

クラスタ対応データベースの開発

OSSのデータベースの定番と言えばMySQLとかPostgreSQLとかいろいろあるのだけど、シェアードエブリシング(ディスク共有型)のクラスタ対応のRDBMSというのはOSSでは聞いたことがない。pgpoolとかはリプリケーション(複製型)なので、ノードを増やすと性能が低下する。MySQLクラスタはメモリ常駐型なので大規模データベースにはむかない。
個人的な見解だが、RDBMSクラスタの本命はOracle RACのようなディスク共有型だと思う。でもって、そのようなアーキテクチャOSSRDBMSの決定版はない。
今日、たまたまOSSのジグソーパズルを埋める会議があったのだけど、ある人がOSS版のクラスタRDBMSがないなあという話を持ち出して議論が沸騰した。
クラスタRDBMSがないので高い金を払って商用製品を買わないといけないという問題提起に対し、OracleRACで困っていないんだからいいじゃないか、何が何でもすべてOSSじゃなければいけないということはない。というようなところからはじまって、確かに商用製品はあるんだけど、やっぱりOSSでもあったほうがいいよね。だけどOracleが10数年かかったことをいったい誰が実装するんだ?そんなタレントはいないだろう。Oracleだって苦労したんだし。メインフレーマにはRDBMSの実装経験者が多くはないけどいて自社の製品開発ではなくてOSSRDBMSにそのリソースを提供するインセンティブがあるんだろうか。あるとしたらそれはなんで。仮に誰かが実装するとしてRDBMSのアーキテクトがいるね、本当の意味のアーキテクトが。(うんうん、それは同意するよ)。
ここから妄想たくましくなる。以下hyoshiok的意訳。
だけどさあ、10年前Linuxがどう言われていたかというと、Linuxなんか学生が作ったおもちゃじゃないか?SMPに対応していないし、ロックもジャイアントロックでスケーラビリティ全然ない、LinusもSMPとかにはまったく興味がないというようなことを公言していたし。だけどさあ大手ハードベンダーがOSの専門家を投入してSMPのスケーラビリティをどんどん改良していって2.6なんかなかなかすごいよ。ってことでOSSクラスタRDBMSを誰かが作るかもしれない。絶対ありえないということはない。とはいうものの、OSS的なのりだと、スケーラビリティとかVLDBの開発というのは難しくていったい誰がどのようなインセンティブのもとそれを開発するんだろうか?共有ディスクなんかは個人じゃもてないし、やっぱ企業の開発だろうなあ。
本当の本当の本音を言えば商売っけまったくなしで言えば、そーゆー技術開発をやってみたいと思う。世の中にはRACがあるので技術的な未踏性はないけどものを作ると言う意味でのチャレンジは間違いなくある。要素技術でいえば分散ロックマネージャをいかに効率よくラバストな実装をするかというところにかかっていると思うのだけど、クラスタファイルシステムの出来でほぼ決まると思う。まあRACにしても元をたどればVAXClusterとかの実装があったからできたわけで20年以上前の技術にルートがある。なんてことをみんなでわいわい話し合って特に結論のようなものはなく、まあとりあえづ、あったらいいねリストに載せるかというようなところで落ち着く。
さらに個人的な見解を重ねると、リプリケーション型クラスタは実装は簡単だけど、コピーを各ノードにばら撒かないといけないので一貫性を保つコストがかかって、さらに致命的なのはノードが増えれば増えるほどコストがかかるというスケーラビリティに欠陥があるということである。それを解決するのには、データのコピー(リプリケーション)をやめて、データを一つだけ保持する方式を採用し、その実装方式として次の2つのうちどちらかを採用する。一つはシェアードナッシング、もう一つはシェアードエブリシングと呼ばれるアーキテクチャである。まあ詳細は記さないがわたしの根拠のない思い込み妄想では多くの場合、後者に軍配があがると思っている。性能的にはどっこいどっこい(?)なのだけど管理の容易さ、拡張性などなどを勘案するとそんな感じになるのではと思っている。まあ、そんな妄想を膨らませた会議であった。