views:

29

answers:

1

I'm producing an application with a few peculiar internal communication characteristics that make the usual suspects for data storage and transport (Qs and RDBMSs) ill-fitted. I'm wondering whether there is a product out there that matches the following characteristics:

  • all data put into it is peristent
  • all reads are delivered out of memory
  • data is universally available
  • data lives where it is most needed
  • data is versioned (nice to have)
  • updates are transactional (I'd like ACID characteristics)
  • data is potentially replicated, but always in sync
  • works on windows
  • is based on or has bindings for .NET
  • is really fast
  • is really robust
  • is redundant
  • is scalable

I'm looking at things like Microsoft codename "Velocity", but I am not sure whether it fits all of the above characteristics. Likewise, Memcached is not a perfect fit either. The current version of this app opts for an RDBMS with a signaling system for inter-system sync, but latency is too high and versioning of the DB is a pain. I need all the robustness, but with none of the trade-offs.

+1  A: 

Velocity/AppFabric will give you much of that, but I'm not sure it's what you want - it's designed to be complementary to a data store, not a replacement. It meets many of your needs, most notably scalability and redundancy (though for complete redundancy you'll need to pay out for Windows Server Enterprise), but there's no persistence mechanism or transactional support. You could perhaps write some extension methods for transactions but at that point it feels to me like you're fighting against the product, not working with it.

Bear in mind also that it's not expected to ship before Q3 this year and there is currently no go-live licence in Beta 2.

I suspect that memcached would suffer some of the same limitations too.

PhilPursglove
thanks. yeah, the durability offered by replication of data may be enough to fulfill my SLAs, but I understood that persistence in Velocity was via RDBMS, which rules it out for me. Memcached is completely non-volatile, so I'd have to build that replication myself, which I'm not against doing, but I'd rather a robust platform that will do it for me.
Andrew Matthews
oops. s/completely non-volatile/completely volatile/g
Andrew Matthews