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 _______________________________________________ gnucash-user mailing list gnucash-user@gnucash.org To update your subscription preferences or to unsubscribe: https://lists.gnucash.org/mailman/listinfo/gnucash-user If you are using Nabble or Gmane, please see https://wiki.gnucash.org/wiki/Mailing_Lists for more information. ----- Please remember to CC this list on all your replies. You can do this by using Reply-To-List or Reply-All.