Simon Willison 開發了一個原型,透過使用 zlib 或 zstd 壓縮先前版本的陣列,在 SQLite 中儲存文字修訂歷史。此方法達成了顯著的空間縮減,將 1,000 次模擬修訂的 20.4 MB 原始文字壓縮至僅 80.3 KB。 此技術為傳統的「每版本一行」儲存方式提供了高效能的替代方案,大幅減少了經常編輯文件的資料庫容量。它展示了如何利用 zstd 等現代壓縮演算法,在不改變複雜資料結構的情況下最佳化關聯式資料庫的資料儲存。 該原型將壓縮後的 JSON 陣列儲存於 BLOB 資料行中,並使用未壓縮的時間戳記陣列來儲存中繼資料。為了最佳化效能,歷史記錄被分割成多個資料列,每個資料列最多包含 128 次修訂或 3 MB 的未壓縮 JSON。
事件背景
SQLite 是一種廣泛使用的輕量級關聯式資料庫管理系統,內嵌於許多應用程式中。傳統上儲存修訂歷史記錄的方式是為每次編輯建立新資料列,這會導致大型文件的資料庫迅速膨脹。zstd 等壓縮演算法透過識別並消除冗餘來減少資料大小,因此非常適合將相似的文字版本捆綁在一起進行壓縮。



