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

John Ralls jralls at ceridwen.fremont.ca.us
Wed Nov 7 19:16:24 EST 2018



> On Nov 8, 2018, at 8:50 AM, Craig Arno <craig at arno.com> wrote:
> 
> 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.

That’s a lot more complex than any backend I’d want to implement, but fortunately GnuCash’s backends are plugins so you’re welcome to write a separate one.

Regards,
John Ralls



More information about the gnucash-devel mailing list