天天看点

JSONB 压缩版本 ZSON

postgresql , json , jsonb , zson

json, jsonb是postgresql里面的一种schemaless数据类型,zson是兼容json,jsonb的一种压缩类型,通过训练的方式生成字典,通过字典进行压缩。

通常获得的压缩比比较客观,压缩后可以节约存储空间,节约shared buffer,提高tps。

训练函数接口如下

需要提供被训练的表,以及json字段名

建议使用真实数据进行训练,确保训练得到的字典对实际数据有效。

查看训练好的字典

字典训练完成后,写入数据,zson将以字典形式压缩存储。

每次调用zson_learn都会生成新的字典,所有字典都会缓存到内存中。

新写入的zson数据会使用最新版本的字典进行压缩,不影响老的zson数据。

使用zson_info可以查看zson值使用的字典版本。

当所有的zson都没有使用旧的字典时,才能删除旧字典,否则请不要删除。

当发现压缩比升高时,可能需要重新训练字典。

或者根据json数据写入的持续,数据内容的变化等,进行调度。

当数据内容变化很大时,可能需要重新生成字典。

生成新的字典后,通过zson_dict,对比不同版本的字典内容,也能知道新字典是否有必要。(请务必使用真实数据生成字典)

<a href="https://github.com/postgrespro/zson">https://github.com/postgrespro/zson</a>