ここでは、IMCのバージョン1開発について書きつずって行きます。
第二部 IMCバージョン1の開発その2についてです。
データベースをJet-Engin経由のMS-Accessで作成したMDBと決めた訳ですが、MDBについては幾つかの制限があります。
-
- MDBはファイルとして2GBの容量制限があります。
- バイト配列を収納できません。
- データを削除してもファイルの大きさは小さくならないばかりか、削除された領域は再利用されないため、定期的な圧縮が必要
1の制限のため、200万枚の管理を行うには50個のMDBを準備し、何らかのキーで収納するMDBを決める必要があります。
2の制限により、サムネイルのイメージを直接データベースに収納できません。バイト配列をBase64エンコードし可読文字に変換した後に格納する事になりますが、Base64エンコードすると30%もデータ量が増大しますので、何らかの対策を打たないと2GBのファイルサイズ制限に、直ぐに達してしまいますので、Base64エンコードしたデータを圧縮してバイト配列にし、このバイト配列を再度Base64エンコードすると元のサムネイルのバイト配列と変わらない大きさにすることが出来ましたので、この方式をVersion1では採用していました。
3の制限は、Jet-Enginに圧縮命令が有りますので、事前試験で圧縮できることを確認していましたが、開発の終盤で50個MDBを連続で圧縮しようとしたところ、10個ぐらい圧縮が終わったところで、エラーを吐きます。
この解決方法が、結局見つからずバージョン1はこれでThe End!!となりました。