4

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 で出力を取得しますか? もっと良い方法があれば、それを示してください。

4

2 に答える 2

8

メモリ内圧縮と圧縮解除をサポートするErlang 用の zlib モジュールがあります。

于 2012-07-16T15:21:17.783 に答える
3

特に解凍には、zip よりもはるかに高速なsnappy圧縮の使用を検討できます。

編集: 最近、私はLZ4をよく使用しており、とても満足しています。それは素晴らしく読みやすいコード、シンプルなフォーマット、よく維持されており、Snappy よりもさらに高速です。

于 2012-07-16T20:16:48.787 に答える