我需要存储数百万个HTML文件,每个文件大约100kB(30kB gzip)。这些文件属于少数几个组。每个组中的文件都有大量相似的块。
我想紧凑地存储这些文件(比单独的gzip好得多)并通过密钥检索它们。我会随着时间的推移插入新文件,包括具有新结构的文件。我对搜索文件不感兴趣。
是否存在存储这些文件的现有解决方案?例如,在对象库之上的专用服务。
自定义解决方案的可能方法有哪些?我正在考虑将文件存储在1000个gzip压缩组中,并在数据库中维护索引。
编辑:我会不断添加文件。我还想每隔几周按插入顺序流出所有文件。
答案 0 :(得分:2)
稍微,在框外答案:将文件放在git存储库中。显然,它会将大块相似的字节压缩在一起。
答案 1 :(得分:2)
您可能希望将一千个文件的组连接到单个文件中进行gzipping,如果它们在串联中彼此相距32K字节,则应该利用公共块。您还可以尝试zstd,它具有更大的字典大小,并且肯定能够利用公共块。
您可以查看gzlog,以便将新数据快速附加到gzip流中。
答案 2 :(得分:1)
如果您不需要定期访问单个文件,可以执行以下操作:
创建一个“偏移查找”文件,列出您的文件名和大小。将所有文件连接成一个巨大的huge.txt文件。压缩huge.txt并将其与lookup.txt一起存储
甚至在需要其中一个文件的情况下,解压huge.txt,使用lookup.txt查找你的文件中的huge.txt内部的起始位置以及它有多少字节,然后从那里提取它。