Skip to content
AndyHitchman edited this page Oct 8, 2010 · 5 revisions

Welcome to the Stash wiki!

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.

Read:

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?