SQLite or SharedPreferences for persistent data storage?
For persistent storage of data is there any distinct advantage of using a SQLlite database over SharedPreferences or vice versa? Currently my application data is only a couple of kilobytes in size, though it could conceivably rise to ten times that size in the future. I can't find anywhere that states how much storage is available using SharedPreferences but would imagine this would be one limitation of using it? Is there any difference in speed between the two methods? I'm looking to weigh up the pros and cons of those two storage methods.
Solution 1:
Off the top of my head:
SharedPreferences:
Pro:
- Lightweight
- Quick and easy to use
- Easy to debug
- Config file can be edited by hand if need be
Con:
- Slow when dealing with lots of data
- Not helpful when the data is more than a simple key/value affair
- Entire file needs to be read and parsed to access data
- Takes up more space, each entry has a considerable amount of ASCII data around it, and all the data itself is ASCII too.
SQLite:
Pro:
- Scales nicely
- Changes don't require rewriting the entire data file from scratch
- Powerful queries
Con:
- More code to write
- More heavyweight (code and memory), overkill when dealing with a little bit of data