Thanks for the in-depth reply. Are there known issues with saving LC stacks to 
Dropbox? I was thinking of Roland's issue with corruption and Phil's suggested 
fix of watching the file with the tilde character before allowing a quit to 
complete. I have an app where users create documents (stacks) and saving them 
to Dropbox is a built-in option. I have one customer who stores their stacks on 
a network server and a few times they've ended up with a corrupted stack. These 
stacks are 1-2 mb in size, so nothing huge, but they are of critical 
importance. I don’t know of anyone having trouble with Dropbox specifically, 
but if I can do something to make the process more robust, then that would be 
of great interest.

Marty

> Knapp Martin wrote:
> 
> > Richard, could you elaborate on the issues with Dropbox?
> 
> I first came across it in a search at Google for "dropbox sqlite", looking 
> for tips on making the most of that relationship.  What I found was a long 
> series of support forum and blog posts filled with horror stories of out of 
> sync or corrupted DB files.
> 
> Some merely lose a record.  Others lose the DB.  And so many have no problem 
> at all that it seems like something we should all be doing, until you look 
> into it far enough to find those who've lost records or the entire DB.
> 
> Of all the things I've read, this forum post covered more ground more 
> succinctly than most:
> 
> ----
>   tl;dr: Dropbox fails the ACID test for databases.  So does its
>   competitor Box, which works the same way.  Use it for SQLite
>   databases only if your transfer time exceeds its synch time.
> 
>   <https://en.wikipedia.org/wiki/ACID>
> 
>   Dropbox does not share files across the internet.  It copies
>   changed files from one computer to its server, then from that
>   server to all the other computers which have access to that
>   shared folder.
> 
>   Dropbox copies an entire file every time a part of it is updated.
>   If you have a 200GB database and delete one row, it needs to copy
>   the entire database file to all the other computers that can
>   access it.  While that works fine for small files, it will involve
>   a lot of traffic as your files grow in size.
> 
>   If two copies of the file are updated at the same time on different
>   computers, the changes made in one copy disappear.  Your
>   user-interface will ask you which one you want, but you may not
>   have enough knowledge to pick the 'best' one.
> 
>   If Dropbox decides to take a copy while SQLite is in the middle
>   of processing a transaction, you will temporarily have a copy of
>   the database with a partially-processed transaction on all the
>   computers which have access to that shared area.
> 
>   Dropbox doesn’t understand that the database file and the journal
>   file go together, even if they’re in the same folder.  And in order
>   to stop one user from hogging its servers there’s sometimes a short
>   delay between when it updates its copy of one file and when it
>   updates its copy of another file.  So it’s possible for one computer
>   which has a copy of the database to have a newer database file than
>   its journal file, or vice versa.
> 
>   SQLite autorepairs files when it finds a database file and a journal
>   file which don’t match.  I don’t know what it would do under the
>   above two conditions.  And what it would do would vary depending on
>   which file Dropbox decided to copy first.
> 
>   Given all the above, I might use Dropbox or Box to promulgate copies
>   of a SQLite database, but only if
>   (A) I had an backup of a recent version and the backup system does
>   not involve Dropbox/Box.
>   (B) If I was fairly sure that if I used one computer to update the
>   database, none of the other computers would try to open the file
>   (even just for reading) until a couple of minutes after the updates
>   were done and the service had had time to sync both database and
>   journal file.
> ----
> http://sqlite.1065341.n5.nabble.com/Sqlite-Dropbox-tp95173p95177.html
> 
> 
> 
> > Is there a recommended procedure for dealing with it?
> 
> This vendor who uses SQLite for their data storage has the simplest solution 
> for sharing their files via Dropbox:  Don't do it. ;)  At least, not 
> directly, but this isn't going to work for so many users who don't spend much 
> time monkeying with files directly:
> 
> https://www.maxqda.com/faq/a-13-can-i-store-my-maxqda-projects-in-cloud-based-services-like-dropbox
> 
> 
> If the SQlite + Dropbox combo were super-robust we wouldn't see so many 
> purpose-built sync systems out there.  Sync systems aren't fun to write and 
> eat a lot of time, so if devs could avoid it so simply they would.
> 
> But they don't.  So many proprietary syncs out there, almost a new one for 
> every app that syncs.
> 
> And if you look into sync, you find just about every app that came up with a 
> syncing method has a very long blog post about their sync 2.0, needed after 
> whatever they came up with when they got started didn't work out.
> 
> Every OS vendor has a sync system in their APIs, but for obvious lock-in 
> reasons none of them are compatible with any other.
> 
> So it's left up to us to figure this stuff out, a million developers all 
> repeating the same wheel-building exercises of Evernote and every other 
> sync-based system....
> 
> -- 
> Richard Gaskin
> Fourth World Systems
> Software Design and Development for the Desktop, Mobile, and the Web
> ____________________________________________________________________
> ambassa...@fourthworld.com                http://www.FourthWorld.com
> 
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to