Another option to consider is not to use a database at all.
Serialisation and deserialization objects to files is often way faster than any of the database options.
Serialisation is best suited when your data is not hugely dynamic or you're saving multiple relatively discrete chunks.
I coverted an app from win ce to serialisation a while ago. It significantly speeded up as a result.
Made much more of a difference than I expected.
And of course you can use linq to xml to query filter sort etc.
You can mix this with a message queue such as ms mq and persist the dynamic part of your data you're capturing to disk in a queue.
Consider a salesman with an occasionally connected app on a laptop.
They could load fairly static data such as product options and costs as xml. Deserialise that in the app so they can put a quote together.
They then need to persist the quotes.
You could just serialise each quote as a separate file and it'd fly.
Or you could persist them using message queue.
Have a windows service which looks for when the laptop connects to wi fi.
When connected it gets each of the quotes off the queue and sends them to head office by calling a web service.