Now you ask , simple. And, frankly, I don't know what's the answer.

Imagine you possess an application that handles some library and features its own data. The information needs to be saved somewhere. So, now you ask , - where if the data be saved?

I am talking about the next - will you install MySQL or SQL Server around the client machine? That appears like shooting flies having a cannon. One other way is by using somthing like SQLite, that doesn't need a running server, but it's a discomfort for doing things (just my own preference). There's also XML, but it's much more discomfort that using SQLite.

In order simple question - where would you keep your data? Install SQL servers? Use own data formats? Every other ways?

I initially published my ideas like a comment because I am unsure there's enough information provided around the type, quantity, and future needs from the data that you would like to keep. As well as I am not a database expert, so one might listen to me having a touch of suspicion and employ whatever you are ultimately preferred creating and looking after.

That being stated, I'd never imagine using any type of database for storing simple client data. The complexness and overhead appear unjustified, specially when the benefits of a SQL database are basically lost on the kind of application. In case your data set may either be entirely loaded into RAM, or even the performance impact of loading the information when needed from the saved file is minimal, you could do this well to understand more about alternative options. The only real situations where I'd consider storage right into a client-side database is that if faster data retrieval occasions were absolutely needed that may 't be accomplished through wiser/more effective code design, or maybe the applying may need the indexing and looking out abilities that something similar to MySQL could offer.

Rather, I've found which i naturally often structure data in trees. For just about any application where speed wasn't from the utmost priority or I wasn't coping with particularly complex data types, I'd go for XML serialization. Not just is querying and modifying an XML file substantially faster than the usual database having a reasonably small data set, the conventional Microsoft DOM library makes dealing with XML data sources fairly simple. Serializing cases of classes is made in to the .Internet Framework and makes me wish I'd had this functionality years back after i spent everything time writing data storage and retrieval code. Another benefits of XML are that it may virtually eliminate versioning issues with future releases of the application, even when functionality is added, which the information files could be seen/edited manually if required. Portability can also be nice, permitting other programs to simply read and import your computer data, and when that occurs, you do not risk corrupting a database with multiple synchronised read/creates. Finally, for which it's worth, I have found serializing custom data sets to XML files to become invaluable in debugging: I'm able to save condition after which open the XML file to determine precisely what information is saved.

In programs that XML does not quite suit you perfectly (normally because I am attempting to cheat and preserve the condition of information-controlling classes loaded into memory), I go for binary serialization. This is a fantastic option to XML if you are searching for faster access occasions and also the complexity from the data/data structure does not lend itself as naturally to XML's hierarchical format. This is built directly into the .Internet Framework, and most likely even simpler to setup than XML serialization (if that is possible). The 2 major disadvantages using this type of data storage are that seamless versioning becomes nearly impossible as well as your information is saved inside a proprietary format that's inaccessible by either the consumer or any other programs. If versioning is not an problem together with your application, there most likely is not much to bother with here. However, with a few data management programs I have written, I have been bitten after returning and adding functionality later if you don't take safeguards for reading through documents produced in the past versions.

In either case, with binary or XML serialization, I really like the versatility given in my experience like a developer with multiple, discrete files for documents. I'm able to connect certain file extensions with my application within the spend, the consumer experience becomes greatly more intuitive for such things as copying, and customers can certainly exchange files produced during my application with other people who also provide my application. How can you think Ms Word grew to become very popular?