I just read SQLite As An Application File Format. While it makes a great case for using SQLite as a persistence layer for single user, single device type apps; it does not seem to lend itself well for multi-device or multi-user and multi-device applications that require frequent synchronization.
I've been looking for a SQL or NoSQL persistence layer that meets the following requirements:
- GPL compatible licensing
- c/c++ API
- native synchronization/replication capability
- Ability to run on at least GNU/Linux x86_64 and Android ARMv7, MIPS, Windows, OSX, iOS optional.
So far, the only option I have discovered is Couchbase and I've been having issues with it. That led me to wonder whether it was reasonable to use Git (or another SCM) plus JSON files as a persistence layer. That prevents rewriting the synchronization wheel.
While it is obviously possible, since git is basically a distributed file system at heart, I'm unclear on the practicality of this as a solution and what pitfalls might lurk. Anyone have any specific experience on using git as a persistence layer?