Derby を使ったカウンタを作る

<< 戻る   トップ >>

これまでカウンタは /var/www/etc/count.xml なる XML ファイルを使用して記録を保存してきた。これを組み込みモードの Apache Derby に移植する。

データの移行

準備段階として、データを変換するアプリケーションをつくる。ウィンドウ環境で動作する必要もさせる必要もないので、コンソールアプリケーションとして作成する。

「以外にも」Java は大丈夫なのだが、予想通り SQL が思うようにならない。それでもなんとか作れたけれど。次はできあがったデータベースを使ってカウンタプログラムを改造。

カウンタを作る

例によってあまりものを深く考えずにコーディングを始めたのだが、RDBMS 移行にあたっってはいろいろと考えるべきことがある。現行のカウンターは java.util.Properties クラスを使い、Servlet の初期化の際にファイルから値を読み込み、終了時にファイルに値を書き込んでいた。カウンタの値の加算や参照は、オンメモリの Properties のインスタンスで行われ、したがって毎回ファイルを読み書きすることもなかった。それでは、ファイルを止めて RDBMS にしたらどのように動作させたらよいのか。ページへのアクセスの度にデータベースに接続するのか。それとも、単に Properties ファイルをデータベースに置き換え、初期化時にだけデータベース接続をして参照・加算はオンメモリで動作させるか。後者ならば RDBMS を使う意味・利点はあるのか。どうもないような気がするし、たかがカウンターの逐次更新でデーベースを使うのもどうか、というところだ。せっかくなので、逐次更新型でプログラムはつくるが、その他は考え直すとしよう。

そんなわけでプログラムを始めたのだが、データベース設計に当たって URL のフィールドのデータ表現はどうするか、CLOB などの事実上制限なしでやるか、VARCHAR 使うなりら最大何文字のしておくか、についてしばし悩んだりした。URL の文字数、実はRFC的な上限はないんだそうだ(とりあえず VARCHAR(255)に設定)。単純なスペルミスで DataSource からコネクタクラスを取り出すのに四苦八苦し、取り出せたと思ったら ライブラリ (derby.jar) ファイルの置き場所が分からずに右往左往するし。Servlet からの相対パスを使ってデータベースにアクセスするばあい、その「相対」の起点てどこかがわからずデータベース探して三千里 (サンプルプログラム一本作って探したところ、ホームに作られていた)。

ResultSet クラスがすごく使いでのあることが分かったことが光明か。しかもまだ完成していないのだ。ああ、コンピュータシステムに弄ばれて楽しい。


作成: 2012-09-12 09:50:51.0更新: 2012-09-13 10:01:26.0
http://museo-anonimo.jp/nanban/?id=1129,http://museo-anonimo.jp/nanban/tr/1129