I’m planning on building a file cataloging system. It will do something very similar to what iTunes does for music, but only with other kinds of files.
So to clarify, the application will have a collection of files, and will store meta-data about the files in the database. For music, it would store all the artists involved in that particular song, as well as the albums the song has been released in, etc.
In order to facilitate searching through the collection of files and associated meta-data, I am considering using a database.
I’m planning on writing this programme using C++/Qt4 as a learning exercise about databases, Qt4 and good C++ coding practices.
For a task like this, what database system would you recommend. Here are the ones I have thought of using. Feel free to suggest something else.
- MongoDB
- CouchDB
- SQLite
- Tuple Store such as Redis or Raik
Perhaps in the future the application will grow into something where multiple users will be accessing the data simultaneously, so a mechanism to ensure that one user doesn’t overwrite changes that have been introduced by another user would be useful (I’m thinking something similar to git’s conflict resolution).
Edited title to in response to close votes.
Mongo and Couch are NoSQL while SQLite is a relational solution. I think for such a task you are better off with a document DB like Couch and Mongo.
Have you seen RavenDB? Its a document DB containing conflict resolution out of the box, Map/Reduce querying and a full-text search engine. It’s written in .NET but can be accessed via HTTP requests you can do quite simply in C++.