Skip to content

DB Fanboy

PL/SQLにビジネスロジックを全部書いたプロジェクトがあった。若気の至りだ。

当時も今もOracleのライセンス料は高い。でもITバブルの残り香のする2000年代、ライセンスが余っているから使っていいと言われたら、やりたいことをやるしかない。データベースの中で完結させる。アプリケーション層を薄くして、ロジックはすべてストアドプロシージャに。理想的に思えた。

たしかに動いた。

当時のPL/SQLは配列を戻せなかった。型も貧弱で、無理やり文字列連結で値を返したりしていた。エレガントとは言い難いが、動くものは動く。

結論から言えば、このプロジェクトは失敗した。

マスターDBへの負荷を分散できなくて死んだ。アプリケーションサーバーはスケールアウトできる。Webサーバーも増やせる。でもビジネスロジックがすべてDB上にある以上、負荷はマスターに集中する。リードレプリカに逃がすこともできない。書き込みも読み込みもロジックもすべてが一台に乗っている。

DBマスターのCPUリソースは、プロジェクト内のどのリソースよりも代替不能だった。他のすべてが水平に増やせる世界で、唯一スケールしない場所にすべてを載せてしまった。

高い授業料だった。Oracleのライセンス料には及ばなかったが。