File 是否可以使用压缩器/数据结构来优化具有重复内容的多个文件?

File 是否可以使用压缩器/数据结构来优化具有重复内容的多个文件?,file,data-structures,dataset,compression,File,Data Structures,Dataset,Compression,我对压缩算法的内部结构了解不多,但据我所知,大多数情况下,当存在重复字符(对于文本文件)时,压缩器的性能会更好 我有一个要求,我们希望处理大量的中到大型文本文件(最大大小约为200Mb),一般情况下会小得多,比如说1-20Mb, 可能还需要搜索数千个这样的文件 我在寻找一种方法: 提出一种磁盘数据结构,允许以密集方式存储这些文件的内容。(文件系统/文件夹结构/备用文件类型一切正常) 我相信这也会有助于搜索 使用压缩算法压缩这些文件,该算法考虑到文件之间重复的大量内容,大多数文件预计包含相同的内容

我对压缩算法的内部结构了解不多,但据我所知,大多数情况下,当存在重复字符(对于文本文件)时,压缩器的性能会更好

我有一个要求,我们希望处理大量的中到大型文本文件(最大大小约为200Mb),一般情况下会小得多,比如说1-20Mb, 可能还需要搜索数千个这样的文件

我在寻找一种方法:

  • 提出一种磁盘数据结构,允许以密集方式存储这些文件的内容。(文件系统/文件夹结构/备用文件类型一切正常)
  • 我相信这也会有助于搜索

  • 使用压缩算法压缩这些文件,该算法考虑到文件之间重复的大量内容,大多数文件预计包含相同的内容(每个文件来自不同的机器,因此无法防止源中的重复)

  • 最简单的方法是使用tar和xz创建一个.tar.xz存档,使用xz的高压缩选项

    对于您的应用程序来说,这首先是跨文件压缩,因为tar有效地连接了这些文件(它们之间有一个小的头),然后xz将该结果视为单个流

    其次,xz查找与其窗口大小尽可能远的匹配数据,查找匹配的字节序列。高压缩选项将允许xz在两个或更多的文件中查看更远的内容。以下是xz预设选项:

                     Preset   DictSize   CompCPU   CompMem   DecMem
                       -0     256 KiB       0        3 MiB    1 MiB
                       -1       1 MiB       1        9 MiB    2 MiB
                       -2       2 MiB       2       17 MiB    3 MiB
                       -3       4 MiB       3       32 MiB    5 MiB
                       -4       4 MiB       4       48 MiB    5 MiB
                       -5       8 MiB       5       94 MiB    9 MiB
                       -6       8 MiB       6       94 MiB    9 MiB
                       -7      16 MiB       6      186 MiB   17 MiB
                       -8      32 MiB       6      370 MiB   33 MiB
                       -9      64 MiB       6      674 MiB   65 MiB
    
    因此
    -9
    将回溯到64MB,覆盖一些或几个1-20MB的典型文件大小。它将无法查看200 MB的文件

    更高级的选项可以指定更大的窗口,最大可达1.5 GB。虽然压缩时会占用数GB的RAM,但请小心使用,以保持性能合理