2008年6月9日月曜日

現実解としてのデータベースとSQL

前にすべてのウェブサービスがローカルにデータベースを持たずに、クラウドのデータベースサービスやweb自体を直接データベースとしてクエリーできるようになるという絵空事を書いたことがある。

この考えは自分としては変わってないんだけど、現実解としては、やっぱり各ウェブサービスがデータベースを個々に抱えてそれを提供するサービスにならざるを得ないんだな、やっぱり。

いろいろクラウドとしてのウェブ開発環境が初期段階なので、まだ、十分に使えるようになっていないということ。いろいろ回数や使用量の制限がありすぎて実用にならない。

また、クラウドのサービスを使うと高コストになってしまうということ。
現実にそこらの安いホスティングでMySQL使っている方が安くって、なおかつ、ある程度までのリクエストに耐えることもできる。アマゾンもGoogleも提供しているクラウド環境は結局有償なので、何か金儲けする為のサイトでないと、簡単に使うことができんよね。

ただ、言えることはネットのウェブサービスのほとんどはデータの検索と更新追加等に翻訳されるってことは変わりはない。なんの変哲もないそれだけのことなのだ。

DBで言うとCRUDだし、HTTPでいうとRESTな訳である。
データを生成し、取得し、更新し、削除する。
それができるインターフェイスがインターネット世界にいろいろおかれているだけのことなのだ。

まずはユーザはブラウザ等のインターフェイスを使って、URLでサーバにクエリーをかける。
サーバはプログラムでそのクエリーをDBのクエリーに変換する。
そして最終的にはウェブにくっついているRDBMSがクエリーされて結果が返される。

これがクラウドになった場合、
単にRDBMSがクラウドに変わるだけで、
今はRDBMS用のSQLというクエリー言語が使われているのが、
別の言語に変わるだけである。

今単純にMVCでしっかりと作っているwebサービスは、
Mがちゃんと抽象化されていれば、簡単にRDBMSからクラウドに置き換えは可能であろう。

あとはそのデータを検索するクエリー言語の能力おの差があろうが。

その点SQLは長い歴史に基づき、また、数学的な集合理論に裏打ちを持つ為に、かなり高性能である。
私が、現在のクラウドデータベースサービスの問い合わせが、あんまり複雑なことができないというのはそういうことである。単純に今SQLでできていることが、実現できない、または、実現するにはアプリケーションの方でいろいろ面倒を見なければならないからである。

SQLがいいのは、ちゃんとRDBMSの設計が適切にできていていれば、かなり凝った手を加えた状態でデータをRDBMSから取得できる。それが一回のRDBMSの接続でできたりする。

アプリケーションの方は、ほとんどその取得データをアプリケーション側で何の手も加えることも無しに使うことができるほどだ。

だからwebアプリケーションの極意(ってほどでもないけど)のほとんどは、SQLに関するもので、SQLで適切かつ楽にデータが取得できるようにRDBMSの設計をすることである。
特にデータの持ち方は非常にアプリケーションのパフォーマンスにも影響する。

だから、しばらくはこういったRDBMS主体のアプリケーションの作り方は変わらないのかもしれない。

そういえば、最近、Firefoxも内部でSQLiteつかってたり、組み込みRDBMSがFの携帯に使われていたり、いろんなweb以外の所でも、データ管理の為にSQLが使えるデータベースが普及してきたようだ。

やはり、データを適切に管理することが現代のどのアプリケーション分野でも求められていて、それの最も標準的で普及した手法としてRDBMSが見られているということだろう。

0 件のコメント: