├── .gitignore ├── .gitattributes ├── img └── zheap.png ├── _layouts └── default.html └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.png filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /img/zheap.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4cc8a83a8c9a80891e15ab434fff8032e921e9373f0ea96e383d71b96041c83f 3 | size 113438 4 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | {% seo %} 10 | 11 | 12 | 13 | 14 |
2 |
3 |
4 | Reinvented PostgreSQL Storage
5 |
10 | About • 11 | Contributing • 12 | Status • 13 | Documentation • 14 | Benchmarks • 15 | Contact 16 |
17 | 18 | [](https://github.com/postgres/postgres/tree/REL_13_STABLE) 19 | [](https://github.com/cybertec-postgresql/postgres/tree/REL_13_ZHEAP) 20 | 21 | ## About 22 | 23 | _zheap_ is a way to **keep table bloat under control** by implementing a new PostgreSQL storage engine capable of running **`UPDATE`-intense workloads** more efficiently. The project was originally started by [EnterpriseDB](https://www.enterprisedb.com/). 24 | 25 | To make _zheap_ ready for production, we are proud to announce that our partners at [Heroic Labs](https://heroiclabs.com/) have committed to **fund the development** of _zheap_ and **release all code to the community**. [CYBERTEC](https://www.cybertec-postgresql.com/en/) has decided to **double the funding amount**, and to put up additional expertise and manpower to move _zheap_ forward. 26 | 27 | ### Why? 28 | 29 | Table bloat describes the phenomenon of tables and / or indices growing in size, even if the amount of data stored in the database stays constant. If one wants to support transactions it is necessary not to overwrite data in case it is rolled back. 30 | 31 | PostgreSQL copies rows on `UPDATE` and stores them in the same table. Stale rows are periodically garbage-collected by an automatic process called [VACUUM](https://www.postgresql.org/docs/current/sql-vacuum.html). Problems start to crop up in `UPDATE`-heavy workloads, as VACUUM might not always be able to keep up. 32 | 33 | ### How? 34 | 35 | CYBERTEC has started a [series of blog posts](https://www.cybertec-postgresql.com/en/zheap-reinvented-postgresql-storage/) that go into the design-goals of _zheap_. 36 | 37 | ## Contributing 38 | 39 | There are a number of active branches that will be merged together once they reach maturity. 40 | 41 | - [Logical decoding](https://github.com/cybertec-postgresql/postgres/tree/zheap_logical_decoding) 42 | - [Undo record set](https://github.com/cybertec-postgresql/postgres/tree/undo-record-set-ah) 43 | - [Rebase on PostgreSQL 13](https://github.com/cybertec-postgresql/postgres/tree/REL_13_ZHEAP) 44 | 45 | ## Status 46 | 47 | - 12-10-2020: [Most regression tests are passing](https://github.com/cybertec-postgresql/postgres/blob/REL_13_ZHEAP/src/test/README.md), but write-speeds are still low. 48 | 49 | ## Documentation 50 | 51 | Managed through [GitHub Wiki](https://github.com/cybertec-postgresql/zheap/wiki). 52 | 53 | ## Benchmarks 54 | 55 | Will be conducted at a later date, as no attempts at performance tuning have been made yet. 56 | 57 | ## Contact 58 | 59 | - [Development](https://github.com/cybertec-postgresql/postgres/issues) 60 | - [Business](https://www.cybertec-postgresql.com/en/contact/) 61 | --------------------------------------------------------------------------------