首页 文章

Microsoft Azure DocumentDB与Azure表存储

提问于
浏览
42

近几年来,Microsoft提供"NoSQL"键/值存储,名为"Table Storage"(http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-tables/

表存储提供高性能,可扩展性(通过分区)和相对较低的成本 . Table的主要缺点是只能对Partition和Row键 Build 索引 - 因此对值进行查询效率非常低 .

最近微软宣布了一项新的"NoSQL"服务,名为"DocumentDB"(http://azure.microsoft.com/en-us/documentation/services/documentdb/

DocumentDB存储JSON对象,而不是存储属性列表(如Tables do) . 整个对象被索引 - 因此可以基于存储对象的每个属性和任何嵌套属性创建有效的查询 .

微软表示,DocumentDB也提供了高性能和可扩展性 .

如果是这样 - 为什么有人会使用Table Storage而不是DocumentDB?听起来DocumentDB提供与Tables相同的功能,但具有其他功能,例如索引任何内容的功能 .

如果有人能够在DocumentDB和Table Storage之间进行比较,我会很高兴,强调每个人的利弊 .

5 回答

  • 4

    两者都是NoSQL技术,但它们大不相同 . Azure Tables是一个简单的键/值存储,不支持复杂查询等复杂功能(大多数都需要完整的分区/表扫描,这会损害您的性能和节省成本),自定义索引(索引基于仅限PartitionKey和RowKey,您当前可以对多个实体进行批量读取请求(如果所有实体都属于同一分区,则支持批量写入请求 . )对于Azure表的实际应用,请参阅HERE .

    如果您的数据需求(特别是在查询它们之前)很简单(如上例所示),那么Azure Tables提供了您所需的功能,由于定价,性能和存储容量,您最终可能会使用它来支持DocDB . 例如,Azure Tables performance target是每秒20.000次操作 . 试图在DocDB上获得相同级别的性能将为您带来更高的service cost . 此外,Azure表受Azure存储帐户容量的限制(500TB),而DocDB存储受限于您购买的容量单位 .

  • 3

    Table Services主要是键值类型NOSQL,而DocumentDB(顾名思义)是Document Type NoSQL存储 . 您要问的是这两种NOSQL方法之间的区别 . 如果你根据这个调整你的研究,你应该能够得到更好的理解 .

    为了简单起见,我建议您考虑DocumentDB和Table Services的定价方式之间的差异 . 不仅这些服务的成本相互之间有很大差异,而且DocumentDB采用“先提供服务”模式,而基于纯消费的定价提供表服务这一事实可能会为您提供一些比较/对比的线索 .

    让我问你一下;如果表服务中的功能很好地满足我的需求,为什么我会使用DocumentDB? ;)我建议您查看当前Azure诊断工具如何使用Azure存储服务,存储指标如何使用Azure存储本身来了解表服务的有用性以及在某些情况下DocumentDB可能有多大 .

    希望这可以帮助 .

  • 18

    我认为比较完全是关于交易价格的表现 . 表服务只是存储服务,似乎最高可达20,000 ops /秒,但是一直支付这种吞吐量(因为Storage一直给我们支付)是每月1,200美元 . 疯狂的钱 .

    表服务具有简单的索引,因此查询非常有限 . 适用于通过ID写入和读取的任何内容 . DocumentDB索引整个文档,因此可以对任何属性进行查询 .

    最后,Table服务受其存储帐户的存储限制的约束(在与Microsoft直接协商的情况下可能会变得疯狂),其中DocumentDB存储似乎是无限的 .

    所以这是一个 balancer 点 . 您是否在一个地方拥有大量数据(数百演出或太字节)? DocumentDB . 您需要支持复杂的查询吗? DocumentDB . 您是否拥有需要快速前进的数据,但基于1对2的属性查找?表服务 . 您是否需要围绕一个简单的索引进行交易,以避免通过吞吐量来支付吞吐量?表服务 .

    和Redis,有人提到......男人,我不知道 . 即使在缓存框架中存在持久性(Redis提供)也不会将其变成一种选择技术......持久存储与持久存储之间存在巨大差异,这些数据“经常使用,但可能会丢失或者时间退休的“,就像缓存一样,以及一个保证数据存在的持久性存储 .

  • 51

    一个真实的例子:

    我必须存储一些令牌,检索它们,删除它们 . 只有查询完成将基于用户ID .

    所以我使用Table Storage,因为它完美地满足了我的要求 . 我根据用户ID保存令牌 .

    文档数据库似乎有点矫枉过正 .

  • 6

    以下是microsoft's official docs的答案

    Cosmos DB,Azure表存储和Azure SQL数据库的常见属性:

    • 99.99可用性SLA

    • 完全托管的数据库服务

    • ISO 27001,HIPAA和欧盟模型条款符合

    • 下表显示了Azure Cosmos DB,Azure表存储的不常见属性

    enter image description here

相关问题