クラウド時代のDB
3月 4, 2009
=たまには技術的なことも書いてみる=
雑誌「ITアーキテクト」の現在発売中の特集は「クラウド時代への備え」。
これを読んでいるときも「これはちょっと大変かも」とおもったのが、データベースの部分。
Amazon の SimpleDB( いい名前です。:) )、Google の BigTable、そしてマイクロソフトの Azure SQL Data Service。いずれもクラウド上で動作する(いわゆる)データベースエンジン。
業務系アプリケーションの開発に長らく携わってきたせいで、DB=RDBの固定概念がある。
オブジェクトデータベース(ORDBとかODBMSとか)やXMLDBとかいろいろあるけれど(さらに言うならば、階層型もネットワーク型もあるけれど)、やはり王道はリレーショナルデータベースなのだと思っている。
# ちなみに、XMLDBに関しては、RDBに”きゅうしゅうがっぺー”されたような印象。
何が大変と思ったかと言えば、これらのクラウド用データベースでHashMapみたいに「Key,Value」の組み合わせでデータを保持する。
Azure SDS の説明を読む限り、同じテーブルの中に異なる「Key,Value」を持つレコードが存在してもお構いなし。
RDBならばスキーマが決まっており、1つのテーブルの中に異なるスキーマをもつデータ(行)は存在しない。実装として「行によって、項目の値の意味合いが変わる」ことはあったとしても、ある行には10個のカラム、別の行には20個のカラム、という実装はない。
私が読んだ AzureのSQL Serviceは、同じテーブル内のデータであっても、ある行には「Key-Value」の組みあわせが3つ、別の行には4つ..ということが起こりえる。
(クラウドのDBでもスキーマはあり)
と、ここまで書いて少し放置していたら、codezineに「クラウド時代に備えて、プログラマーが理解しておくべき考え方」という記事があった。
IBMの「dvelopreWorks」のパネルディスカッションが行われたらしいが、この中でもクラウド上でアプリケーション/サービスを構築する際にエンジニアが気をつけなければならないことについて、簡単に触れられている(とくに3ページ目)。
面倒なことは「あちら側」にお任せして..と単純に考えて作ってはイケナイ、ということらしい。
うぬぬ、これはまた新たに学ばなければならないことが出てきてしまった、ということです。
うれしいような、悲しいような。
Windows Azureは開発者用の(たしか200CPU時間まで無料で利用可能な)アカウントをもらったのだが(アカウントのInvitationがとどいたのが12/30。あやうくSPAM扱いでゴミ箱にいれるところだった..)、まだ一度もさわっていない(早く、さわってみたいよぉ)。
まー、私の(プログラミングの)スキルレベルでは、とりあえずやってみて、どんなものなのか、つかんでみて、本格的な開発の際には、もっとちゃーんと正しく実装ができるワカモノたちにお願いしなきゃイケナイと思われるが(力不足が情けない)。
独り言
オブジェクトデータベース「Cache」(本当は末尾のeの上にアクセント付き)は、どこかで使うチャンスは無いものかと狙っているのですが、なかなかチャンスは巡ってきません。
エライ早いってウワサなんですが。
Leave a Reply