-The compressed pages must be stored in a file that can still be randomly accessed and updated, despite now being variable-length. To solve this, the compression layer uses an "outer" SQLite database, effectively nesting one database inside another. Where SQLite would write database page #P at offset P × page_size in the disk file, instead `INSERT INTO outer_page_table(rowid,data) VALUES(P,compressed_inner_page)`, and later `SELECT data FROM outer_page_table WHERE rowid=P`. Outer database transactions maintain ACID reliability (use at your own risk).
0 commit comments