開発小史2

ここでは、IMCのバージョン2開発について書きつずって行きます。

~2019年12月

 IMCバージョン1がJet-EnginとMDBの不具合により開発途上で終焉を迎え、最初に戻りデータベースの選定から、やり直しとなりました。
 最初からデータベースの選定なら、Windows OSに依存しない、無料のデータベースを選定することとすると、MS-SQLは選定から外れます。Oracleも無料のバージョンが有りますが、さすがに古すぎるバージョンなので除外しました。

 残るは、MySQLとPostgresqlになるわけですが、当時会社でもOracle Databaseに変わる次期データベースを、何にするか議論があり調査したことがあり、がっつり使うならPostgrsqlで、手軽に使うならMySQLだねと方向性が決まりかけていましたので、IMCでも将来1000万枚の登録も視野に入れてPostgrsqlに決めました。
 ただしPostgresqlにも、この時点で問題が無かった訳ではなく、Ver10で初めて実装されたパーティショニングテーブルがVer11で実用的にはなったものの、パーティションテーブル間での移動が出来ず移動元で削除し、移動先に挿入しなければならない等、実運用上で必要な機能が無いことが、少し残念では有りました。

 IMCバージョン1のソースは、アジャイル開発のため難解になっていたので、1からコーディングをし直しました。
 おおよその機能が開発出来てきたところで、悩ましい問題に直面します。

    1. 画像比較を高速に行うため、全データを常にメモリーに持たせたため200万枚程度でもメモリ使用量が2GBを常に超え、32Bitのプログラム制限に達している
    2. プログラム改修で、速度の向上がまだまだ見込める
    3. CPU負荷が上がらず(25%程度)、画像比較に時間がかかる
    4. Average HASH法の限界か、似ていない画像が類似画像候補として耐えがたい数が抽出されてくる

速度向上とメモリ容量削減のためバージョン3の開発を決めました。

IMCバージョン3の開発に進みます。