表中只有幾列,大約有 100 多個基于列的數據,只需存儲這些數據,以便以后導出到其他源。此數據(除了提到的前幾列之外)不需要索引/過濾或以某種方式操作。沒有查詢,可以以任何方式檢查此數據。唯一的問題是,該應用層可以檢索具有其他未使用工作負載的整行,并將其反序列化以進一步轉換為外部格式。有一個想法是將整個類序列化到這個字段中,但后來我們意識到,這對數據大小來說是一個巨大的開銷(因為額外的java類元數據)。因此,它是一個簡單的鍵值數據(如關系模型所示,鍵集是靜態的)。在數據庫性能(50+ TB存儲)方面,在PostgreSQL中存儲這些額外的未使用數據的正確方法和數據類型是什么?也許值得省略密鑰數據并僅將值存儲為數組(因為鍵是靜態的),并在應用程序層按索引反序列化后獲取值(因為首先是數據庫性能)?
1 回答

慕田峪7331174
TA貢獻1828條經驗 獲得超13個贊
a_horse_with_no_name,非常感謝,但數據類型真的很棘手。jsonb
就包含 的單個元組所需的字節量而言,必須始終牢記 - 格式名稱的大小。因此,如果有人想要重新發明輪子并將大名稱存儲為單個索引 - 它將減小整體元組大小,但它并不比將所有數據存儲為典型的關系表字段更好,因為算法適用于這兩種情況。jsonb
key
json
key
byte
TOAST
另一種方法是對單個字段使用存儲方法。在這種情況下,將在緩存中保留更多元組,因為無需將整個數據保存在內存中。EXTERNAL
jsonb
PostgreSQL
jsonb
無論如何,我最終在字段類型中組合了+(因為在我們的系統中不需要查詢字段中的數據):protobuf
zlib
bytea
bytea
添加回答
舉報
0/150
提交
取消