six*_*ude 3 postgresql jdbc compression
使用 Java 和 JDBC,我将字符串存储到 Postgres 中的 JSONB 列中。插入时效果很好。
检索值时,Java 内存不足,因为我检索的数据量较大,并且每个 json/字符串大约为 1MB。我想做的是编写这样的查询:
SELECT compress( myJsonColumn ) FROM myTable WHERE ...
Run Code Online (Sandbox Code Playgroud)
我在 Postgres 中查找了一些压缩方法,但没有找到。任何指示将不胜感激。谢谢。
澄清:澄清一下,我不想压缩数据库中的数据。我认为 Postgres 会优雅地处理这个问题,我主要关心的是 java-heap-space。
我的架构中有三个组件。
我最近有机会使用这样的东西:
CREATE FUNCTION gzip(text) RETURNS bytea
LANGUAGE plperlu IMMUTABLE STRICT COST 100000 PARALLEL SAFE
AS $_X$
use Compress::Zlib;
my $x = Compress::Zlib::memGzip($_[0]);
return encode_bytea($x);
$_X$;
Run Code Online (Sandbox Code Playgroud)
但请注意,bytea 本身是以转义形式传输的,这会增大大小。运气好的话,JDBC 实现可能会在将它们读入内存时即时对它们进行转义,而不是以原始形式存储整个结果集。抱歉,我对 JDBC 的使用还不够了解。
难道不能只使用游标一次处理一行然后丢弃它,而不是将所有行读入内存吗?
归档时间: |
|
查看次数: |
4714 次 |
最近记录: |