我製作了我的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