What database does PhoneGap use and what is the size limit?
Is my understanding of what database PhoneGap will use accurate?
Yes it is. PhoneGap can use LocalStorage, SessionStorage, or SQLite databases. You can also, alternatively use PhoneGap to connect to the devices native classes via a plugin, and pass the native class data, that it will then store on the device.
Is there any solid documentation about how much data a PhoneGap database of a given type will store? If it is a PhoneGap database and not the browsers database implementation.
- LocalStorage :: 10MB
- SessionStorage :: 10MB
- SQLite Database :: 50MB-80MB (depends on the device)
- Native Database using plugin call :: Unlimited data amount
- IndexedDB :: 5MB. Still existant. But very buggy, theres a list of devices/OS's that run it here
Does PhoneGap have plans to adhere to the the Web Storage standards thereby dropping WebSQL in favor of indexedDB? If so, will I still be able to use my existing WebSQL code (via a built in PhoneGap-polyfill) once the switch to indexedDB is made?
WebSQL is slowly being deprecated. Its replacement is IndexedDB or SQLite. The best option for you, however, is either SQLite or the Native Database (for example Core Data on the iOS)
In situations where database size is limited and cannot be expanded by either PhoneGap or the Quota API, but access to the file system is available, is it reasonable to assume that "extra" data could be stored on the device's file system or on a SD card?
It is definitely possible.
- On Android you can specify the location of the database, and therefore push data to an external database.
- On iOS, you can use the native database call to store data on CoreData, there is no external memory.
- In all cases of all OS's, you can create a flat database file, like a Text file, store your data in key-value lists, and then pull those into your app at first run. Beware of the memory management in this case.
I've added an explanation of how to go about coding for the SQLite and LocalStorage databases in my answer.
I was able to run a test on an Android 4.0.4 tablet. It uses WebSQL (an old version of WebSQL that doesn't even support db.changeVersion) and it allowed me to fill up the entire hard drive (12GB with my database). I don't know about other devices or how SD cards work.