过去曾有关于为 NoSQL 数据库创建抽象层的问题,但它们之间的差异如此之大,以至于如果不遗漏它们提供的大部分功能,就不可能真正做到这一点。
这最近随着亚马逊 DynamoDb 的推出而改变,它看起来几乎与微软的 Azure 表存储相同,所以我正在考虑制作一个开源抽象层。每个人都喜欢抽象,因为当我们试图说服我们的雇主接受这些“新技术”时,它给了我们更多的筹码。
据我所知
AzureTable.RowKey == DynamoDB.HashKey
AzureTable.PartitionKey == DynamoDB.RangeKey
谁能看到创建这个抽象层可能会出现什么问题以及我可能会失去什么功能?
两者似乎都以相同的方式对数据进行分区,并且它们的查询看起来相似。
我注意到的第一件事是 Microsoft 的 c# SDK 要求您的类派生自,TableServiceEntity
而 Amazon 的 c# 对象持久性框架使用和属性上的HashKey
属性RangeKey
。