library for storing application data locally without the need for a cumbersome database.
Project no longer actively maintained
FlatStore is no longer being actively maintained or developed as of yet as other commitments require my time; the project had promise, so it may be brought forward again in the future as my needs may require such a library - in the mean time, feel free to
pillage pieces of the project as you see fit, you could likely combine pieces from here with the previous project (FlatDB) to get a working storage solution
- Clint 14/01/2013
A hint of what's to come
- Flat file format (hence the name)
- Ability to store any type so-long as it can be serialised (and even if it can't - more on that below)
- Custom data formats - Store your data, how you want it - Implemented via a construction and destruction system on an interface, now you can write out the data you want and need from an object, without needing serialisation / deserialisation
IFlatFormat format = new XmlSerFormat();
string objAsXml = format.Decompose<Customer>(someCustomer);
format = new BinarySerFormat();
string objAsBinary = format.Decompose<Customer>(someCustomer);
- Lazy (a good thing) - Deserialising an entire database is time-consuming an unnecessary,
data is retrieved but only instantiated as and when needed
- Indexes - Want to look for a particular entry without deserialising a whole bunch of items? Fields that don't change (or change infrequently), can be used as indexes,
find the data you need fast, and then construct the objects you need
- Integrity - Hashes allow data to be verified for integrity
- Security - Encryption allows data to be stored safely, either individually, or the entire database
- Redundancy - Certain types or entries can be marked for "back-up", each save also records a copy of the data in multiple formats (of your choosing), so should something happen,
it can be recovered
- Versioning - Need to roll-back a change? Want an easy way to store data and get a
versioning system for free (text-editor etc), let FlatStore record delta's of each save (for certain types, records etc), so versioning can be achieved with
minimal space requirements
- Free lunch - Already use INotifyPropertyChanged? So does FlatStore, let it
handle tracking changes for you
^ The above are the features I would ultimately love to see this library have, the core ones it
will have are: Flat File, Any type, Custom formats, Lazy loading, Indexes and free lunch, I think you'll agree the others would be the awesome icing on the cake.
Your support means a lot, your feedback a lot more so; I'd be eternally grateful for any feedback, be it praise, criticism (please keep it constructive) or questions, please let it be known, use the discussions tab up yonder (^).
- 16/04/2011 11:31 PM BST - Don't worry, not dead! (nor is the project), I've had work and well, Portal 2 is out soon :p
- 19/03/2011 04:55 PM GMT +0 - Chaotic code as it's mid-idea, but infrastructure for writing values out is being added, including the ability for data modifications to be handled (you even get it for free if you use INotifyPropertyChanged)
- 14/03/2011 05:18 PM GMT +0 - Engine and file format now taking shape, code can now give an idea of how files are structured.
- 16/02/2011 03:17 AM GMT +0 - Storage providers system fleshed out and initial work on Cryptography providers has been implemented (hashing at current, encryption may come later)
- 16/01/2011 07:18 PM GMT +0 - First download noticed! (unfortunately that person got an empty project ;p) - I will post here each time a significant change is available :) - otherwise refer to the
commit notes to see what's available =]
- 09/01/2011 08:50 PM GMT +0 - Project has been created and development is now underway :)
FlatStore is the second iteration of FlatDB (here on codeplex), a new project was created as it is radically different.