[GNC-dev] [GNC] mysql backend, second user (lock, for example)

Craig Arno craig at arno.com
Wed Nov 7 18:50:39 EST 2018


On 11/7/2018 1:42 PM, Craig Arno wrote:
> Using a queue has other benefits if you find yourself in a situation...

For the "offline" update usecase where the primary database is "server"
based, a local SQLite database could be used for local offline work
(travel receipt entry), which the database Event Write Queue could be
tee'd to a file for later "online" update replay.

When "online" status to the remote server based database is restored,
the "remote write queue" could be played to update the remote/server
database.  This would have the net effect of "mirroring" the remote
database transactions locally for one user's offline work.

In the read direction, a query for all database table entries between
the last successful update/connect and now will have to be performed and
the local database updated with new changes from
User/Bookkeeper/Accountant activity.  If there are a "lot" of changes
and online time is short or connection speed slow, and potential for
interruption high, it might be best to queue up read database changes to
disk until the database read "diff" is complete for all tables.  Then
the "read" half of the Sync can then be completed with local disk based
"complete" diff data.  And give the user a little arrow chasing arrow
button to do a "refresh" compare between local and remote databases, if
sync is ever in doubt.  The "arrow chasing arrow button" is consistent
with how remote calendar/contact based office information systems
operate today.  I do this with local machine Thunderbird Calendar and my
OwnCloud server based system.


More information about the gnucash-devel mailing list