1

过去曾有关于为 NoSQL 数据库创建抽象层的问题,但它们之间的差异如此之大,以至于如果不遗漏它们提供的大部分功能,就不可能真正做到这一点。

这最近随着亚马逊 DynamoDb 的推出而改变,它看起来几乎与微软的 Azure 表存储相同,所以我正在考虑制作一个开源抽象层。每个人都喜欢抽象,因为当我们试图说服我们的雇主接受这些“新技术”时,它给了我们更多的筹码。

据我所知

AzureTable.RowKey == DynamoDB.HashKey
AzureTable.PartitionKey == DynamoDB.RangeKey

谁能看到创建这个抽象层可能会出现什么问题以及我可能会失去什么功能?

两者似乎都以相同的方式对数据进行分区,并且它们的查询看起来相似。

我注意到的第一件事是 Microsoft 的 c# SDK 要求您的类派生自,TableServiceEntity而 Amazon 的 c# 对象持久性框架使用和属性上的HashKey属性RangeKey

4

1 回答 1

1

在查看此处的比较:比较 Windows Azure 表存储和 Amazon DynamoDB时,我问自己你到底想抽象什么。
你需要问自己,然后展示你在创建类和约束时选择的权衡,以便社区对你想要实现的目标有一个很好的了解,并希望能帮助你完善它。
话虽如此,我会从头顶提出几个问题,您应该弄清楚:
1.您将如何强制对象大小的差异?(1MB / 64KB)
2. 您将如何抽象 DynamoDB 的预置吞吐量?
3. 你打算如何强制 Azure 表存储有 256 个属性限制?

祝你好运

于 2012-05-09T09:59:37.887 回答