I'm writing an application that keep track of a library of music, and I need a way to store the list of tracks, albums and other data. Usually for something like this I would use an XML file to save the data. And then I would use an ADO.NET DataTable to manipulate the data. But this program could potentially be saving a large number of data items. Also I'm going to want to be able to quickly search, sort, and filter the table of songs.
So my first question is there a best practices limit on how much data should be stored in a single XML file before it's a better idea to be using a relational database? Second what are some alternative options for how I store this data in a single file. Keep in mind I don't want the program to rely on there being a server (MS SQL, MySQL etc.) running somewhere that it can connect to. I want the data stored in a single file. Also I'm not a huge fan of MS Access. So while there are ways for ADO.NET to access an MDB file I'm looking for other options.
Another option I'm considering is sticking with serializing/serializing my collection of "Track" objects to/from XMl. Yet doing any database type stuff like searching, sorting, filtering using Linq on the collection. I haven't used Linq yet, so I'm not sure of the specifics for how this would be done, or if it would be the best option.