There have been questions in the past about creating an abstraction layer for NoSQL databases, but they differ so much that it wasn't really possible without missing out on most of the features that they provide.
This recently changed with the introduction of Amazon's DynamoDb which looks almost identical to Microsoft's Azure Table Storage so I'm looking at making an open source abstraction layer. Everybody loves abstraction as it gives us more leverage when trying to persuade our employers to embraces these 'new' technologies.
As far as I can tell
AzureTable.RowKey == DynamoDB.HashKey
AzureTable.PartitionKey == DynamoDB.RangeKey
Can anybody see what issues may arise and what functionality I may lose by creating this abstraction layer?
Both appear to partition the data in the same way, and their querying looks similar.
The first thing I've noticed is that Microsoft's c# SDK requires your class to derive from TableServiceEntity
whereas Amazon's c# object persistence framework uses attributes on the HashKey
and RangeKey
properties.