A lightweiht easy to use Java library to store the history of changes of domain objects in bi-temporal format.
BarbelHisto
tracks two time dimensions for you: record time is when a change to a domain object was recorded in the system (created and inactivated) and effective time is when this change is opposed to become effective or valid from a business viewpoint.
The library implements Martin Fowlers Temporal Pattern that can be found here: https://martinfowler.com/eaaDev/timeNarrative.html
- bi-temporal (auditing-proof) data storage based on blazing fast cqengine collections
- small easy-to-use API (as simple as bi-temporal data storage can get)
- backed by transactional, high performance collections
- works out of the box with default implementation and configuration
- manage different time zones of client and server
- persistence support for heap, off-heap, disk storage and custom data stores
- provides basic functionality, extendible for individual needs
- remember every change to the data, nothing is ever going to be deleted
- build-in thread safety by minimizing mutability and object locking
- pretty print function to learn about bitemporal data storage
Get a version on Maven Central.
Download the actual snapshot releases.
Or clone this git repository to try some of the features of BarbelHisto
.
Memory analysis results. One hour run, 5000 Objects saved every 10 seconds. OnHeapPersistence
.
Result details here.