Erlang 用のテキスト圧縮ライブラリはありますか? 非常に長い文字列を扱う場合、文字データを圧縮すると有利な場合があります。テキストを圧縮したり、Erlang でそれを行う方法を考えたりした人はいますか?
モジュールを使用することを考えてzip
いましたが、ファイルを操作する代わりに、次のようにメモリ内で作業します。
compress(LargeText)->
Binary = list_to_binary(LargeText),
{ok,{_,Zipped}} = zip:zip("ZipName",[{"Name",Binary}],[memory]),
Zipped.
次にunzip
、必要なときにテキストをメモリに戻します。このような:
{ok,[{"Name",Binary}]} = zip:unzip(Zipped,[memory]).
私の Erlang アプリケーションは、大きなテキストがストレージ システムとの間を行き来する必要がある中間層の一部であると想定されています。ストレージ システムは、大きなテキストの格納を目的としています。ストレージを最適化するには、送信する前に圧縮する必要があります。CLOB
テキスト値がOracle Databaseのデータ型に似ていると仮定します。erlang:garbage_collect/0
ファスナーとの組み合わせで脱げそうかなと思っています。
または、Erlang でそれが不可能な場合は、おそらくsystem call
ビアos:cmd({Some UNIX script})
を使用して可能であり、その後、Erlang で出力を取得しますか? もっと良い方法があれば、それを示してください。