2006-01-09  ジューシィ―その2―

SQLiteを導入

ジューシィは6時間おきにあるデータを再計算し,HTMLファイルを出力します。いまのところ機能はそれだけですが,将来は何らかのサービスを追加したいと思います。またDB中のレコードは日々,増え続けるため定期的に古いレコードを削除しなければいけません。

いままではデータの管理にBerkley DBを使っていましたが,SQLiteに替えることにしました。「今後の拡張のためにもSQLで操作できるDBを導入した方がよい」という判断をしたためです。

SQLiteはデーモンプロセスが不要なDBです。ひとつのDBはひとつのファイルで完結します。Microsoft Accessが扱うDBのファイルに「mdb」ってありますけれど,あれと発想は同じようです。

SQLiteの第一印象

  • ヤダ,「型」がない
  • 噂どおり動作は速い
  • 短期間の検証では要件を満足することが分かったのだが長期間,使い続けたときの性能が不明。調査する必要がありそうです

相変わらず苦戦中

SQLでも何でもそうですが,しばらく使っていないと忘れてしまうものです。

表を正規化したら,いつつの表に分かれました。DBに表を追加したまでは良かったのだがその後,思考が止まってしまいました。表にレコードを追加するときにサブクエリが必要だったのだが,どうやってSQL文を書けば良いのか分からなくなってしまったのです。

それでもレコードの追加をなんとか終えたのだが,今度は表の結合という最大の難関にぶちあたりました。私どうも表の結合が苦手なのです。いつつの表に用事があったのだが,それらをどうやって組み合わせるか悩んでしまいました。

まず複数のサブクエリが出力した複数の表を結合してみたのだが,とっても性能が悪くなってしまいました。どうやらサブクエリの結果はキャッシュされないようです。結果的にいつつの表を立て続けにガチャガチャ内部結合すれば良いだけでした。いやはやヨコ漏れです。

この先どうなることやら。もちろん何とかしますが(なぞ)。