我制作了我的Django模型,并在向我的PostgreSQL数据库插入测试/虚拟记录后,我意识到我的数据对于每条记录来说都相当大。所有领域的数据总和大约为每个记录700 KB。我估计我将有大约500万条记录,所以这将在3350 GB标记周围变得非常大。我的大部分数据都是大的JSON转储(每个字段大约70+ KB)。Django:数据库级别或代码级别的TextField(字符串)数据压缩
我不确定PostgreSQL是否会在通过Django框架处理时自动压缩我的数据。我想知道在将数据输入数据库之前是否应该压缩数据。
问题:使用Django模型字段类型TextField
在使用一些x
压缩算法 PostgreSQL可以自动压缩我的字符串字段?
我不应该依赖PostgreSQL,只是事先压缩我的数据,然后将它输入到数据库?如果是这样,我应该使用哪个压缩库?我已经在Python中尝试过zlib
,看起来不错,但是,我读过gzip
这个库,我很困惑这将是最有效的(就压缩和解压缩速度以及压缩百分比而言)。
编辑:我读了this Django snippet for CompressedTextField这引发了我对使用哪个压缩库的困惑。我看到一些人使用zlib
,而一些人使用gzip
。
编辑2:This stackoverflow question表示PostgreSQL自动压缩字符串数据。
编辑3:PostgreSQL使用pg_lzcompress.c进行压缩,这是LZ压缩系列的一部分。假设我们不需要在TextField
本身上使用某种其他形式的压缩(zlib
或gzip
),因为它在数据库本身中的数据类型为text
(可变长度字符串)?
你好@harmic,我首先想非常感谢你。你的回答非常有帮助:)。我不会读通过大的TOAST属性。我将通过主键进行筛选,并将其名称编入索引。 TOAST数据将由WHERE主键获取=。几乎所有的数据过滤都将通过PK完成。我不会通过阅读TOAST属性来访问数据。 –
user1757703