【发布时间】:2012-04-13 14:48:45
【问题描述】:
questions in the past 关于为 NoSQL 数据库创建一个抽象层,但它们之间的差异如此之大,以至于如果不遗漏它们提供的大部分功能,这实际上是不可能的。
随着亚马逊 DynamoDb 的推出,这种情况最近发生了变化,它看起来几乎与微软的 Azure 表存储相同,所以我正在考虑制作一个开源抽象层。每个人都喜欢抽象,因为当我们试图说服我们的雇主接受这些“新技术”时,它为我们提供了更多的筹码。
据我所知
AzureTable.RowKey == DynamoDB.HashKey
AzureTable.PartitionKey == DynamoDB.RangeKey
谁能看到创建这个抽象层可能会出现什么问题以及我可能会失去什么功能?
两者似乎都以相同的方式对数据进行分区,并且它们的查询看起来相似。
我注意到的第一件事是,Microsoft 的 c# SDK 要求您的类从 TableServiceEntity 派生,而 Amazon 的 c# 对象持久性框架使用 HashKey 和 RangeKey 属性上的属性。
【问题讨论】:
-
你有没有着手构建这个抽象层,它是开源的吗?
-
我认为这不是一个好主意,很简单,因为 Azure Tables 是一个宽列存储,而 AWS DynamoDB 是一个文档存储。在这种情况下,您应该考虑 Azure Tables 与 AWS SimpleDB,或 AWS DynamoDB 与 Azure DocumentDB。
-
自 2012 年以来发生了很多变化。当时甚至不存在 Azure DocumentDB!
标签: c# nosql azure-table-storage amazon-dynamodb