[GNC] I'm still a bit confused about when things get saved.

John Angelico jatalldad at gmail.com
Thu Sep 10 23:10:15 EDT 2020


Just buying into the tail end of this discussion.

I used to sell and support a commercial package (mid-range, solid,
double-entry, Windows platform only, it's now called Sage Pastel) which
used the Btrieve file system for its database.

In the early versions (90s of last century, before XML), it was at risk of
losing data, because they chose not to use a Brtieve feature called
transaction rollback (IIRC) before updating. Instead they used batch
update, and transactions were temporarily stored in simple text files
(risky in a FAT file system of course). The batch update concept meant that
one could amend or throw away an erroneous entry, but once updated the
transactions were fixed within the Btrieve database and could not be
altered (conceptually written in ink instead of pencil :-) ).

Later when computers were faster, file systems were more robust but power
loss was still an issue, the developers rewrote the code to save at the end
of every transaction (each line of an invoice, each line of a bank entry or
journal) into Btrieve files instead of text files, which meant the worst
you could lose would be the line you were on at the time the power went
out. However they retained the positive features of batch update to allow
for transactions to be modified before final commit.

Thus, the concept of saving every line is well-known but depends on a good
database backend to work effectively. I don't know XML so I don't have any
ideas on how to improve that aspect in GNC. When I overcome my install
issues, I plan to use a database rather than XML, since I am more familiar
with that style of working.

Cheers all.
John Angelico
Melbourne Australia


More information about the gnucash-user mailing list