47-大量のデータはデータベースで

プログラマが知るべき97のこと」の46個目のエピソードは、データベースに関する話です。

アプリケーションで大量の永続データを扱う必要がある場合やデータが相互に関係し合う場合は、迷うことなくRDB(リレーショナルデータベース)にデータを保存すべきでしょう。

時代の差なのでしょうか?自分が仕事としてプログラミングを始めたのは2003年頃なので、その頃にはデータベースの利用はごく一般的な事でした。まだ、MySQLなどのフリーで信頼性のあるRDBはなかった為、ほとんどの業務でOracleなどを利用してたと記憶しています。なのでピンと来ないエピソードなのですが、自分のデータースにまつわるエピソードを紹介しておきます。
1つ目は最近の案件で実感した事ですが、組込RDBは思った以上に高性能で使いやすいという事です。あるアプリケーションの改修を行う際に性能要件を大きくあげて欲しいとの要望がありました。それまではインメモリでデータを格納しても十分なデータ量だったのですが、要件を満たすためにはメモリがどうやっても足りません。そこで、組込RDBとしてH2 Databaseを使用しました。合わせてDomaをO/Rマッパーとし、全文検索エンジンとしてLuceneを組み合わせた形になります。MySQLなどは自然に利用していましたが、組込DBということで初めは戸惑ったものです。でも、調査をしてみると意外に簡単に実現できました。
2つ目はマスターテーブルに関する話です。世の中には不思議なアプリケーションも多いもので、「性別区分」や「都道府県コード」のようなものまで全てマスターテーブルに管理するアプリケーションがあります。明らかに不変なものまでRDBで管理するのはオカシイ話なのですが、もっとオカシイ事に全てのテーブルにマスターメンテ画面も付属するのです。こんな不毛な機能にクライアントは幾ら払っているのだろうと考えるわけです。
自分にとって、RDB+SQLはごく自然なスキルとして身につけてきました。それはJavaの案件、特にウェブアプリケーションに多く携わっていたからだと思います。ですが、人によってはRDBとは縁のない領域でプログラムをしているかと思います。もし、RDBについてあまり詳しくないようであれば、最低限のスキルは持つべきです。あちらこちらで応用の利く便利な技術だと思います。

プログラマが知るべき97のこと

プログラマが知るべき97のこと