关于为NoSQL数据库创建一个抽象层有questions in the past,但是它们之间存在很大差异,以至于在不错过它们提供的大多数功能的情况下实际上是不可能的。
最近随着亚马逊的DynamoDb的推出而改变,这看起来几乎与微软的Azure Table Storage相同,所以我正在寻找一个开源抽象层。每个人都喜欢抽象,因为它在试图说服雇主接受这些“新”技术时为我们提供了更多的杠杆作用。
据我所知
AzureTable.RowKey == DynamoDB.HashKey
AzureTable.PartitionKey == DynamoDB.RangeKey
通过创建这个抽象层,任何人都可以看到可能出现的问题和可能失去的功能吗?
两者似乎都以相同的方式对数据进行分区,并且它们的查询看起来很相似。
我注意到的第一件事是Microsoft的c#SDK要求您的类派生自TableServiceEntity
而Amazon的c#对象持久性框架使用HashKey
和RangeKey
属性上的属性。 / p>
答案 0 :(得分:1)
在回顾这里的比较时:Comparing Windows Azure Table Storage and Amazon DynamoDB,我问自己你究竟想要抽象出什么
你需要问自己,然后提出你在创建课程和限制时所选择的权衡,以便社区很好地了解你想要实现的目标,并希望能帮助你完善它。
说完之后我会提出一些你应该弄清楚的问题:
1.你如何强制对象大小的差异? (1MB / 64KB)
2.您将如何抽象DynamoDB的预配置吞吐量?
3.您如何强制Azure表存储具有256属性限制?