Skip to content

Stash is a persistence engine for .NET. It eschews relational models and object/relational mapping and instead follows the No-Sql paradigm of storing graphs or 'documents'. Take a look at the Wiki for an overview of how it works.

License

AndyHitchman/Stash

Repository files navigation

Stash is a persistence engine for .NET. It eschews relational models and object/relational mapping
and instead follows the No-Sql paradigm of storing serialised graphs or 'documents'.

It is effectively a Key/value store with access via Indexes.

Stash currently uses BerkeleyDB as its persistence store. Other persistent engines may be implemented. 

Executable documentation can be found in the Stash.ExecutableDoco project. I'm also trying to think of
a suitable example application. 

Improvement in the pipeline are:

  * Have queries work over the current session as well as the backing store.
  * Implement Azure Table Storage backing store (possibly build on Lokad.Cloud).
  * Look at other potential backing stores (e.g. Lucene.Net, ESENT, SQLServer).
  * Create a Linq provider for StashedSet.
  * Finish the implementation of Map/Reduce.
  * Implement BSON and JSON serialisers.
  * Implement web server to serve graphs/documents directly over HTTP using a RESTful API.
  * Build a meaningful example application.
  * Refine executable documentation.
  * Explore migration strategies/tooling for:
		* New/changed indexes (calculate new index/recalculate existing index).
		* Migrating updated serialized objects (handle changes to type members).
  * Meaure performance and optimise if possible.
  * Look at how Stash could leverage Berkeley Replication and HA.
  * Explore options for sharding/partitioning data:
		* Probably a RemoteBackingStore and a ParititionBackingStore working in concert.
		* Need to examine 'hard' problems about adding/removing nodes and resilience. 
		* Rhino DHT could be useful here?

About

Stash is a persistence engine for .NET. It eschews relational models and object/relational mapping and instead follows the No-Sql paradigm of storing graphs or 'documents'. Take a look at the Wiki for an overview of how it works.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published