v1.3.0
New Features:
- adding simpledb, a fault-tolerant embedded key-value store using all building blocks in this project
- adding simpledb crash tests, a test suite to exercise crash and recovery scenarios which can be reused for any other key/value store
- recordio now features buffer size tuning options and buffer reuse (directIO and io_uring improvements are in the making)
- improved performance in recordio - between 25x for snappy and up to 60x without compression, especially for small files
- new version (v1) for sstables removing protobuf for value serialization (internal change, old tables are still readable and backward compatible)
- improved performance in sstables: up to 10x faster scanning and merging of tables
- sstables is now merging via iterators, several new ways of compacting during merges - e.g. like in map/reduce
- wal features a non-fsync append for better throughput
- wal features manual rotations in addition to the size-based ones
- memstore has support for tombstones and sstable iterators to enable easier merging
- adding SuperSSTableReader: a wrapper for multiple sstables behind a single sstable interface
- adding EmptySSTableReader: for easier testing and nil-safe merging scenarios
Breaking Changes:
- errors are now properly wrapped per package for easier debugging, as per changes from golang 1.13 - some interfaces now require to handle errors via
errors.Is
compared to direct equality checks - all New* methods now return the interface, previously it might've been a pointer to the struct
Notable Bug Fixes:
- 5b18807 fix in skiplist iteration and sstable reader - where an iterator would continue to iterate across the upper boundary
Housekeeping:
- updated documentation
- switched dev branch from master to main
- moved examples package to _examples
- adding some new badges
- add go vet in the CI