An embedded key-value store written in Go, optimized for fast random lookups and read-heavy workloads.
Pogreb is an embedded key-value database written in Go that's specifically optimized for read-heavy workloads with fast random lookups. It provides persistent storage with low memory overhead while supporting datasets larger than available memory. The database uses hash table indexing to deliver high-performance point queries at the expense of features like range scans.
Go developers building applications that require fast random access to stored data, particularly those with read-intensive workloads like caching systems, configuration stores, or metadata management.
Developers choose Pogreb for its exceptional read performance in Go applications, simple API, and efficient memory usage. Unlike more general-purpose databases, it makes deliberate optimizations specifically for point lookups, making it faster than alternatives like Bolt, LevelDB, or BadgerDB for random access patterns.
Embedded key-value store for read-heavy workloads written in Go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Optimized hash table indexing delivers high-speed point queries, benchmarked as outperforming goleveldb, bolt, and badgerdb in read performance tests.
All database methods are safe for concurrent use by multiple goroutines, enabling easy integration into concurrent Go applications without additional locking.
Efficient memory management supports datasets larger than available RAM with minimal overhead, as highlighted in the key characteristics.
Clean interface with Put, Get, Delete, and iteration operations reduces boilerplate code, as shown in the usage examples.
The hash table indexing design makes range queries impossible, limiting use cases that require ordered or prefix-based data access, as admitted in the limitations.
Single hash table across WAL segments necessitates full index rebuild during recovery, which can be impractical for large databases, as noted in the design trade-offs.
Optimized for read-heavy workloads, so write performance and bulk inserts may lag behind more balanced databases, focusing on infrequent updates.