炎上案件予定だった案件を炎上させなかった案件。
某大手WEBサービスの会社R社にて。
データベースの移行案件だった。どのデータベースだか忘れたがOracleへの移行だったため、大型案件となった。
皆要所要所で重要なポジションについているが、私も結構大きい部分だった。
9つのデータベースにアクセスし、そのデータを1つのデータベースで管理するプログラムとSQLを書かなくてはいけなかった。4人チームではあったが、2人はサポーターで書くのはリーダーか自分。
自分もリーダーのサポート役だったんだが、リーダーがどうしても1000人以上の誤差が出ると言っていた。Accessでテストをしていて1000人を切りたいと何度も何度も書き直していた。
何でそんなに1000人を切りたいのかを聞いた所、誤差の分はinsert文で手入力し、全てテストしなくてはいけないとのこと。そうなると残業の日々が待ち受けてると言われた。
9つのDBから設計書を書き出し、全てのカラムやレコード数などを確認し、どこから抽出すれば最適かを入念に考えた。参照整合性制約(リファレンス)などどこにもないからこそ、本来つけるべきリファレンスを探す。また、DB間でのリファレンスはつけられないが、どこがそういう制約部分になっているかを探し出す。9つのデータベースで全ての整合性を取り、SQLだけでは対処できないのでPerl言語で補完し、残業をいとわず作り上げた。accessでのテスト結果は9件。
リーダーにそんな訳ないと言われたが、本番で流しても9件という結果を出した。
そしてまたその9件も、課金してるだけユーザーだったため、9件削除して終了となった。
皆残業なく幸せになれた。
データベースって結構バグを引き起こす部分だったりする。
しかし元々の9つのデータベースの作りが良かった事と、それを自分が読み解き答えを導き出した結果だと思う。そもそもが滅茶苦茶な設計のデータベースだったらこうはうまく行ってなかっただろう。