Extremofile is single binary value persistent storage that makes best effort to read your data back unchanged.
Answer yes to all questions:
- Need to persist small amount of data? It costs 2 full data writes + fsync on each store operation.
- Expect power loss or storage media degradation? If you have reliable power supply and storage, that's awesome.
- Network backup is not available? If you have robust remote database available when you need it, that's great.
Failure modes tolerated:
- power loss
- random data corrupted in one replica
Failure modes detected:
- almost any data corruption, limited to checksum mismatch
Failures not handled by design: human error, files deleted.
- You only get valid value bytes.
- You may get value/writer together with non-critical error.
- Internal storage format may change with major version.
- Library will read one previous storage format.
- Thread-safe.
- Not safe to use by multiple processes, data may be corrupted.
-
Why not SQLite or goleveldb or X?
I could not find a ready solution that actually survives storage media degradation, rather than just reporting error. If you need similar durability with complex data structure, wrap your database of choice with automatic backup.