ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Bigtableの使い方教えます

GAE/Jを使うのに一番戸惑うのが、データのストレージがRDBMSではなく、Bigtableなことでしょう。
JOINが使えなかったり、WHERE句でORが使えなかったり、これまで慣れ親しんでいた方法が軒並み使えません。
これらの制限は、Bigtableに限ったことではなく、KVS(Key Value Store)型のクラウド系のデータベースではみんないえることだと思います。


最初、私も戸惑ったんだけど、いろいろ触っているうちに気付きました。昔、AS400でやってたころと一緒ジャンと。AS400とは、IBMから出ているオフコン(?)ですね。今は、System iと呼ばれているようです(最新だとまた違うようですが)。


AS400のファイル(テーブル)は、キーもしくはインデックスでアクセスします。インデックス(論理ファイル)は、ある行の特定のカラムがソートされていて、物理ファイル(テーブル)へのキーを持っています。
あるデータにアクセスするには、キーでアクセスするか、インデックスの特定の行にカーソルを当てて(SETLL)、条件に一致する間データを読み込んでいきます(READE)。


Bigtableへのアクセスもこれとほとんど同じなんだな。というわけで、AS400で培った経験が、Bigtableへもそのままいかせそうなので、その辺の話を6/13のSeasar Conferenceでお話します。
お申し込みはこちらから。
http://event.seasarfoundation.org/sc2009spring/


他にもJDO on GAE入門、Slim3 on GAEの話をします。
JDOって良くわからんという人は多いことでしょう。GAE上のJDOは、癖が強いものの、癖を飲み込めば、できることが少ないので、直ぐに使いこなせます。Bigtableを理解したら、次は、それに具体的にアクセスするJDOを学びましょう。


そして、最後はもちろん、Slim3。TDDでblogアプリケーションを作る様子をデモでお見せします。
以前、JJUGのイベントでデモしたときは、Webフレームワークとして、Slim3 Strutsを使っていたのですが、Strutsはテストしづらいので、捨ててしまいました。
JDOへのアクセスも含めて、TDDできるように完全に作り直しています。


Controllerの雛形を作成するときに、テストケースの雛形も作成するようになっているので、テスト・実装・確認、テスト・実装・確認をすばやく繰り返すことができます。
確認は、JUnitでの確認だけでなく、ブラウザ上でも常に確認します。Slim3のControllerは、HOT reloadingができるので、ブラウザ上でも即座に確認できます。HOT reloadingがないと開発用のローカルサーバを再起動しないと修正内容を確認できないので、時間がかかり、リズムが壊れてしまうのです。もしくは、リズムが壊れるのがいやで、ブラウザ上では確認しなくなる。
でも、やっぱブラウザ上でも確認できたほうが、気持ちがいい。自分のやっていることが、ビジュアル的にも正しいことがわかるからね。