I am writing a credit card applicatoin that keep an eye on a library of music, and that i need a method to keep listing of tracks, albums along with other data. Usually for something similar to i would make use of an XML file in order to save the information. After which I'd make use of an ADO.Internet DataTable to control the information. But the program may potentially be saving a lot of data products. Also I am likely to wish to have the ability to rapidly search, sort, and filter the table of tunes.

So my first question it is possible to guidelines limit how much data ought to be saved in one XML file of all time a much better idea to become utilizing a relational database? Second what exactly are some alternative choices for the way i store this data in one file. Bear in mind I'm not going this program to depend on the website as being a server (MS SQL, MySQL etc.) running somewhere that it may connect with. I would like the information saved in one file. Also I am not really a huge fan of MS Access. So while you will find methods of ADO.Internet to gain access to an MDB file I am searching for other available choices.

An alternative choice I am thinking about is adhering with serializing/serializing my assortment of "Track" objects to/from XMl. Yet doing any database type things like searching, sorting, blocking using Linq around the collection. I've not used Linq yet, so I am unsure from the specifics based on how this is done, or maybe it might be the best choice.

As I can't answer the questions you have regarding XML, In my opinion the reply to your problems is SQLite. This is an very fast and light-weight file-based SQL db that does not need a server. You may also use something similar to System.Data.SQLite to have interaction by using it from inside .Internet.

Look at this: http://www.sqlite.org/. I believe if sorting and blocking is essential for you, you are gonna desire a relational database over XML.

SQL Server Express is free of charge.

Also, XML isn't a database technology. For example, what goes on when the system crashes while you are along the way of writing out an update? You will get a corrupt file that can't be retrieved.

It appears that numerous people learn about SQLite as well as the first a part of your question --

There's an excessive amount of data within the XML file whenever you can't manipulate it rapidly enough to your requirements.

Oh ... along with other flat-file databases : Berkeley DB and Berkeley DB XML

If you are accustomed to dealing with XQuery, BDB-XML may be simpler to transform to than SQL.

You may be thinking about solution insInternet domain. You will find multiple solutions:

*. Store data relationally

MS SQL Compact Edition (you need to simply reference the dll inside your project and keep data in one file or SQL Lite

*. Object Store

While relational data will work for large amount of information and we have to perform plenty of statistical calculation (for example aggregations etc), the table structures and queries become excessively complicated when it comes to complex objects. You are able to evaluate a few of the perfectly known and free Object Store solutions that are quite performant and secure. Among the option would be Db4O. There is a native .Internet client and gratifaction is stated to be really good.

*. XML data store

While i'm not aware much about this and could be good to understand good quality .Internet based solutions. Berkeley DB i supposed is on Java from Oracle

As recommended by others, SQLite is a great lightweight file based database. You might use SQL Server Compact