天天看點

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>