Closed tantaman closed 1 year ago
There's a regression to insert performance (https://github.com/vlcn-io/cr-sqlite/blob/c26d2f8a088fadc1cdca7b592f8cb73101e8feff/py/perf/perf.ipynb). Apparently writing an extra table is a heavy (~20%) hit. Update performance is improved by ~15% though. Makes sense since updates do not have to write to the lookaside table -- the row is already there.
This is probably worth it given the storage savings. Users will most likely use uuids
for primary keys in CRRs so we can save ~12-14 bytes per column with this. For users with compound primary keys, the savings are greater.
Still a number of failing integration tests.
@jeromegn - everything looks good if you want to give it a spin.
I'm going to write a few more tests still before merging.
Nice!
What about the remaining tasks? I fear they'd require a new migration.
The rowid change will not since virtual tables don't actually save a rowid.
I don't think I'm going to move the sentinel information out of the clock tables since it will require ordering another set of tables when reading changes out.
Replaces #344
TODO:
Move sentinel record to lookaside?: not doing this since it makes pulling changes quite difficult.rowid
and swap to new algorithmTest key creation: