2019-11-22-01-fistでzlibを使い始める - project-enigma

2019-11-22-01-fistでzlibを使い始める

>> Site top >> weblog >> 月別アーカイブ >> 2019年11月のlog >> 2019-11-22-01-fistでzlibを使い始める

最終更新日付:2019/11/22 19:20:52


fistでzlibを使い始める

2019 年 11 月 22 日

ずっと以前から、fist のデータサイズには懸念があった。デカい添付ファイルは圧縮したり、色々工夫もしていた。あと、確実に秘匿する必要がある情報は暗号化圧縮したり。そういった諸々を、自動化をかねて fist の機能として組み込んだ話。

データのほとんどがテキストである fist でも、長年使っているとデータファイルは太ってくる。5MB を超えたのがいつ頃か覚えていないが、そのあたりから不安になりはじめていた。使い始めてからの期間をもとに今後のサイズ推移を予測したりもしてみて、「それほど気にする必要はない」と思ったり、やっぱり不安になったり。

データを圧縮して保存する、みたいなことはずっと考えてはいた。しかし、自分は何の因果か「標準以外のライブラリ」を使うことを酷く渋る傾向があるのだ。多分、別の環境に移るときにそちらでも確実に使えるのか、といったことを心配してしまうのかもしれない。あるいは、最初は稚拙でもいいから、何でも自分で書きたいのかもしれない。多分両方だな。しかし、人口に膾炙したライブラリが利用できるなら、それはほとんどの場合自分で作るよりも優れている。自分でやる、ということ自体は悪いことではないけれど、行き過ぎると病気みたいなものだ。これは自分が気をつけるべきポイント。

なんのきっかけか忘れてしまったが、zlib の info を読む機会があって、fist に圧縮機能を組み込むならこれを使うのが正道だよな、と思ったのだ。info を読みながらサンプルコードを実際に動かしてみて、最終的にはそれで導入してみることになった。最初にデータファイル全体を zlib で圧縮する対応をして、あとはバックアップアーカイブでも一部で zlib を利用するようになった。

バックアップアーカイブでの利用というのは、以下の3種類だ。

従来、private 設定されたデータはそのままプレーンテキストでバックアップされていたため、取り扱い注意になっていた。fist のデータファイルは暗号化されているからひとまず保護されているものの、バックアップアーカイブはそうではない。これはかなり初期の段階からの懸案事項で、自分がクローズドな環境でしか使わないため、放置されていた。しかし、zlib 導入によって圧縮してその後追加で暗号化するようにしたため、ようやく懸案事項のリストから除くことができた。

トラッキングデータも、親データが private の場合には同じ問題を抱えていた。そうでなくてもトラッキングデータというのは変更の履歴なのだから、それ自体が改変されるのは困る。なので、トラッキングデータも圧縮するようにして、private データの場合にはさらに暗号化をするようにした。

添付ファイルについては、これまでバックアップアーカイブ作成時には「出力先ディレクトリにダンプ」するだけになっていて、これまた懸案事項になっていた。特にprivateデータの場合には。しかしこれも、圧縮と暗号化で単一のアーカイブファイルに収めることができるようになった。

一方で、fist が起動時に開いたデータファイルのメモリ上での展開イメージは、特に圧縮したりはしていない。データ本体も、添付ファイルも。これは、検索性能の維持のためだ。圧縮すれば空間効率は上がるだろうが、全体的な時間コストも上がる。検索性能は特に悪化するだろう。ここらへんのトレードオフを現在検討中。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : fist

 

 


Copyright(C) 2005-2019 project-enigma.
Generated by CL-PREFAB.