Hi!

I need the ability to make multiple changes / commits to my SQLite
database but keep snapshots of previous states and potentially roll back
to those states later on.  All of that needs to be persistent, i.e.
survive closing the database and restarting the process.  After some
time, I can get rid of old snapshots (my process determines by itself
when and which snapshots can get discarded, it is not based on some
fixed TTL or something like that).

Is it possible to do all that with SQLite?

From reading the docs, it seems to me that (persistent) WAL mode
basically does *exactly that* internally:  Changes are recorded in the
logs so that previous versions are retained.  Rollbacks would be
possible by "simply" discarding the WAL entries after the desired
snapshot.  And discarding of very old snapshots corresponds to
checkpointing.

However, I'm not sure if all of that functionality is (officially)
exposed to me as a user.  There are in particular two points where I
think that my requirements differ from the functionality that WAL mode
exposes:

1) Handles to snapshots can be obtained and stored, but they are
read-only.  It seems to be not possible to tell SQLite to restore the
WAL to a previous version and then continue modifying from that version.
 (Which basically means truncating the WAL file at a certain point.)

2) From what I have seen, checkpointing can only be triggered for the
full WAL (or whatever is possible with existing readers) and not
selectively up to a desired point.  Of course I could work around that
by creating a reader at the point I want to keep.  But then I wonder if
it is a problem if the WAL can never be *fully* checkpointed (as in my
requirement).  Would that mean that it keeps on growing forever, or is
checkpointing able to remove parts from the beginning of the WAL?

Is my understanding here correct?  And is there some way in which I
could achieve my requirements using WAL mode (or somehow else)?

Thank you very much!

Yours,
Daniel

-- 
https://www.domob.eu/
OpenPGP: 1142 850E 6DFF 65BA 63D6  88A8 B249 2AC4 A733 0737
Namecoin: id/domob -> https://nameid.org/?name=domob
--
3.6.0: Bar-Pri-Ran-Rog-Sam-Val-Wiz
To go: Arc-Cav-Hea-Kni-Mon-Tou

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to