I need a data storage system that mimics a simple DB, but can also store the changes history, and support branching.
That is, several data tables (no need to support actual SQL syntax), option to commit arbitrary changes, option to tag the system state, and option to travel between tags.
It should be very close to a simple source control system, such as git for instance. Without merges and etc., just commit changes, put tags, and travel between tags (rollback and fast-forward), and at any moment have the "working copy" which resembles the system state for the specified tag.
I can implement such a data structure myself from the scratch, but I'd prefer to build it over an existing robust implementation, such as DB engine or etc.
Is there a known solution for this?