2011年2月8日火曜日

ということで

初詣も済ませないままもう二月ですよ。
神社仏閣の類は好きなんだけど、人ごみはそれほど好きではないので、
「落ち着いたら出かけよう」
なんて暢気に構えたまま一年が過ぎるのが常だったりします。困ったもんだ。

それはさておき、最近 SQLにはまっている。
非常に唐突な話なんだけど、chromeが HTML5に対応して、websqlが使えるようになったことが主な原因。

……もっとも、DBMS自体は以前から mysqlあたりでちょっとしたリストの作成みたいなのはやってたんだけど、csvテキストを perlでちょちょいと弄ったほうがてっとり早いじゃん的なことしかやっておらず、主に「データ管理機能の分離によるCPU・メモリ資源的な負荷分散」以外には意義を感じてはいなかった。
だから、
「確かにすごいことできるんだろうけど、それほど使い道ないし」
ってな感じだったわけで。
でも、たまたまそこそこ項目数のある複数のリストを操作するハメに陥ったことで、自力でデータ管理するのがさすがに面倒になった。
「やはり餅は餅屋だよね」ということで、まずは javascriptから手軽に使える websqlに白羽が立ったわけです。

で、結論から言うと「うわ、めっちゃ楽」。
それ専門に作られたものなんだから当たり前といえば当たり前なんだけど、久々に感動した。
具体的には「ありがとう、CREATE TRIGGRER、ありがとう UNIQUE、ありがとうCHECK」。
これら機能のおかげで、本来自分でやるはずだったメンドクサイ部分を一気に省略できましたよ。

例えば複数のそれぞれに密接に関連するリスト(具体例で言うと「顧客情報」「注文リスト」「商品在庫リスト」など)に対する操作を行えば、データの整合性を取るために関連する項目に対して、同時にすべて修正する必要が出てくる。

データ管理の上で最も必要で不可欠なことは、この手のデータの正当性・整合性を保障すること。

もちろんアプリケーション側でも「データの正しさ」の検証は可能だけど、データ検証のための仕組みをアプリケーションごとに用意する必要があるから無駄もいいとこだし、なによりよほど単純で小規模なものでもない限り、正当性を保障するのは非常に面倒なことになる。

それが、DBMSに任せれば初期設定(みたいなもの)一発で全部解決。
もちろんシステム自体の保守も自分でやる必要もない。(←ここ重要)

例えばこれが10年ぐらい前だとしたら、動作環境の整備や習熟のための参考資料調達などの面で、かなり高い敷居になったと思うけれど、今はこうやってブラウザの標準搭載機能としてお手軽に試せるのがすばらしい。
とはいえ、先述したTRIGGER……データベーストリガは、商用DBでは早い段階(2000年以前)から搭載されていたけど、オープン系のDBに搭載されたのってつい最近っぽい。
そう考えると、今こうして楽できるのは、それ相応の時間的が必要だったということなのだろう。
これって Unicodeが一般化したことで今テキスト処理でかなり楽できてる現状にすごく似ている。

なんにせよ、これのおかげでどんだけ楽になったことか。
書式の理解にはそれなりに時間を要したけど、これなしで作業することを考えると今となっては気が遠くなる。
おそらく「その筋」の方々は、「同様の結果」が得られるよう相応の技を駆使、実現してきたことなんだろうけど、わたしは何事も極力楽したいと思う人間なので。

「アプリケーション側でいちいち処理書かなくても、SQL一発で済むんじゃ?」
「DB側から計算済みのデータ返してもらったほうが楽じゃん!」
とまあ、とにかくクエリーの書式考えるのが楽しくてしょうがない。

座右の銘は「楽するための苦労は厭わない