高速化

最近手がけている仕事に、中国に発注した検索システムが遅くて使い物にならんので高速化してとの案件があります。
データ量はMax100万件程度、ボトルネックはRDBMSOracle)みたいです。設計書とか見てみたら、くれというから書いたという気持ちがありありとわかる無駄に細かい設計書が。んなものより、ERDとUMLを落書き程度でさらさらと書いてもらった方がよっぽど役に立つというのに。それでも、DB構築用のスクリプトを残しているのは感心。途中で文法エラーが出るけどな。


しゃあないから直接DBとソースを調べてみると、Excelみたいに全ての情報をつっこんだ巨大テーブルがどんっと。データ重複しまくり、他にコードの何桁目から何桁目があの情報とか素敵設計が。
正規化しないと駄目じゃん!と突っ込む先ははるかな大陸におわすのでありました。
中国外注が悪いというよりも、そもそも発注元が非機能要求を伝えてなかったんだろうな。あれも検索したいこれも検索したいという要求をそのまま飲んだら巨大テーブル1個で「FIELD LIKE '%KEY%'」で検索するようなシステムになりましたという落ち。


SEが非機能要求を考慮して客と仕様を詰めるという当たり前の仕事をしていなかったのでしょうね。
仕様を詰めるのもとにかくプロトタイプ作ってと言われて紙の資料見たがらないお客さんだから、中国に発注するのは難しいわこりゃ。
安いからって中国に仕事出してたら、日本の技術者が育たなくて尻を拭いてくれる人材もいなくなるんですけどね。


DBを正規化して、それに合わせて検索条件の入力方法を見直して、登録済みのデータ数十万件をコンバートして・・・内部的には大改造になりますな。