Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在存储到数据库之前压缩大型文本数据?_Database_Postgresql_Storage_Large Files - Fatal编程技术网

Database 在存储到数据库之前压缩大型文本数据?

Database 在存储到数据库之前压缩大型文本数据?,database,postgresql,storage,large-files,Database,Postgresql,Storage,Large Files,我有一个从系统LAN检索许多大型日志文件的应用程序 目前,我将所有日志文件放在Postgresql上,该表有一个列类型的文本,我不打算在这个文本列上进行任何搜索,因为我使用另一个外部进程,每晚检索所有文件并扫描敏感模式 所以列值也可以是BLOB或CLOB,但现在我的问题是, 数据库已经有了它的压缩系统,但是我可以像使用普通的压缩工具那样手动改进这种压缩吗?最重要的是,如果我手动预压缩这个大文件,然后将其作为二进制文件放入数据表中,它是否因为数据库系统提供内部压缩而无用 我的猜测是,如果您不需要任

我有一个从系统LAN检索许多大型日志文件的应用程序

目前,我将所有日志文件放在Postgresql上,该表有一个列类型的文本,我不打算在这个文本列上进行任何搜索,因为我使用另一个外部进程,每晚检索所有文件并扫描敏感模式

所以列值也可以是BLOB或CLOB,但现在我的问题是,
数据库已经有了它的压缩系统,但是我可以像使用普通的压缩工具那样手动改进这种压缩吗?最重要的是,如果我手动预压缩这个大文件,然后将其作为二进制文件放入数据表中,它是否因为数据库系统提供内部压缩而无用

我的猜测是,如果您不需要任何搜索或查询功能,您可以通过压缩文件,然后直接将二进制数据存储在数据库中来减少磁盘使用量。

我不知道谁会更有效地压缩数据,是您还是db,取决于所使用的算法等。但可以肯定的是,如果你压缩它,要求数据库再次压缩它将是对CPU的浪费。一旦压缩,尝试再次压缩每次都会产生较少的收益,直到最终消耗更多的空间

PostgreSQL中使用的内部压缩设计为在速度方面出错,特别是在解压缩方面。因此,如果您实际上不需要它,那么如果您在应用程序中压缩它,您将能够达到更高的压缩比

还请注意,如果数据库进行压缩,数据将以未压缩的格式在数据库和应用程序服务器之间传输-这可能是问题,也可能不是问题,具体取决于您的网络

正如其他人提到的,如果您这样做,请确保关闭内置压缩,否则将浪费周期


您需要问自己的问题是,您真的需要比数据库提供的更多的压缩吗?您能在应用服务器上为此节省CPU周期吗。要想知道数据能压缩多少,唯一的办法就是尝试一下。除非有实质性的收益,否则不要为此烦恼。

这不仅仅是浪费CPU,它还使应用程序堆栈变得更复杂(一切都需要知道如何从应用于该领域的专门压缩中获取纯文本)和脆弱(更多代码意味着更多错误)。由于几乎不可能有重大改善,这将是一个糟糕的选择。