Until this moment PostgreSQL is lacking compression and encryption functionality which is provided by most of other DBMSes, In this presentation we explain how compression and encryption of database pages can be done at lower level of Postgres backend. Pages will be stored at disk in compressed (and optionally encrypted) format and are decompressed+decrypted when loading in memory (in buffer pool).
Proposed approach allows: - Minimize database size on the disk - Reduce disk IO and so increase speed - Improve disk access locality: updated pages are written sequentially - Provide database encryption with no space overhead and almost not speed penalty It requires minimal changes in Postgres core, only few files are affected: fd.c, md.c
Compression is done at tablespace level, providing convenient way to trigger which tables should be compressed. Compressing is most efficient for archive and append-only data.