Open
Description
Currently transaction log kind of exists, but it's not clear why. It's not exposed to users and is mostly a cause of complaints about poor write performance and large database size (especially after deletes).
I propose to separate log writer implementation from actual QuadStore (live database index). And make it optional, since most DBs has internal log anyway.
At the same time, make our transaction log more useful when it's enabled:
- Replace legacy quad delta operations with operations that use resolved quads (with node IDs).
- Add node deltas with ref counts.
- Support wildcard deletes on quads.
This will allow to form valid batch import log offline and then load it into empty database without any additional checks for uniqueness, node allocations, refcount updates, etc.