The db alternative discussed at the XBMC DevCon was the use of CouchDb for the video library:
http://en.wikipedia.org/wiki/CouchDB
http://couchdb.apache.org
Essentially it's a document based distributed storage system. Thus, multiple clients are automatically kept in sync across the network.
Views (written in javascript) are then placed over the top, and are indexed/cached. They're also documents, so view creation on one client is propogated to the rest.
You communicate with the db over http and get json results. There are also API's for various languages, C/C++ not being one of them, however.
Essentially we're in an exploratory phase: It seems to be well suited (we don't really use the relational side of the db all that much, after all) to our needs, but the main question is whether or not it can do all we want and can return results fast enough to be useful. If it does, then the problem of concurrent databases on multiple clients is solved. You also get full editting of the database from any web browser.
You need an Erlang daemon running, but that shouldn't be of any major issue I should think.
If anyone wants to help out at the exploratory phase, give me a shout. Essentially we need to:
1. Setup an example db with a bunch of documents with whatever fields we want.
2. Setup a bunch of views to give us what we have today.
3. Look at how easy/hard it is to generate dynamic views for smartplaylists and the like - perhaps they can simply be generated directly based on input from the UI and be kept in the db rather than hanging on to their XML descriptions?
Cheers,
Jonathan