The great thing is that we're on the verge of not needing Web SQL anymore. sql.js (https://github.com/kripken/sql.js) is SQLite compiled to JS (via Emscripten). It can do everything you'd normally do with SQLite. You can take the db and serialize it down into a format that can be stored in local storage, and rehydrate the DB from that when a user returns to your site.
The only thing preventing this from being practical is that sql.js weighs in at around 2MB. Still, there are caching mechanisms that could get around that issue.
I think it's fantastic that we've reached the point where we don't need databases baked into our browsers. All we need is fast JS engines (which we have) and a dumb data store (which we have), and we can provide our own client side databases.
I've used both sql.js and WebSQL. Sql.js will get the job done in a lot of cases, but it is not a perfect substitute. Sql.js's performance is an order of a magnitude worse than WebSQL when put under heavy load (this likely has more to do with ASM vs true native code than Sql.js in particular). Particularly, sql.js starts to stutter at a far lower query load than WebSQL for a given machine. Furthermore, Sql.js uses sqlite3_exec() under the hood, which means that all results get converted to strings, regardless of the underlying type of the column. And finally, effective memory capacities are not the same.
Yes, I just wrote a small app around sql.js, and I was surprised at how poorly it performed. I was expecting to be within a factor of three of native, but I'm seeing performance down by an order of magnitude or so. The sql.js page alludes to bugs open in Firefox and Chrome for these issues; I imagine they'll shake out over time, but it's certainly not a buttery smooth experience just yet. Even still, it certainly works better than the alternatives!
It isnt needed in order to have a practical datastore, indexeddb is somewhat ugly but very practical, wrapper libraries on it are generally fairly small and can be very usable / are very practical.
It is needed to get a a particular database running, but I agree its awesome that the capabilities of the web are improving to the point this is possible.
The only thing preventing this from being practical is that sql.js weighs in at around 2MB. Still, there are caching mechanisms that could get around that issue.
I think it's fantastic that we've reached the point where we don't need databases baked into our browsers. All we need is fast JS engines (which we have) and a dumb data store (which we have), and we can provide our own client side databases.