
@Aki, I also would not recommend any flat files for the storage of data in your system. Consider seriously using relational or even object oriented dbs (noSQL engines) which are probably ideal for you case. If you settle on RDBMs, you can use Triggers [ http://db.apache.org/derby/docs/10.1/ref/rrefsqlj43125.html ] for copying old records to Historical tables for future referrences while INSERTing new ones. This saves you a lot or time and clever code trying to determine if things have changed in your data sets, etc. If you have to use plain text files for storage then you can use revision control systems like git or svn / mercurial / bitkeeper / monotone / perforce etc. On top of that, you might employ systems like SWIG [ http://www.swig.org/ ] that let you hook onto their C / C++ APIs and do things like diffs to do data comparison using your preffered language(s) which is C-sharp. This may or may not be too neat. Martin.