近年来,Microsoft提供了一种名为“表存储”的“ NoSQL”键/值存储(http://azure.microsoft.com/zh-cn/documentation/articles/storage-dotnet-how-to-use-表/)
表存储提供了高性能,可伸缩性(通过分区)和相对较低的成本。表的主要缺点是只能对分区键和行键进行索引-因此对值进行查询效率很低。
最近,Microsoft宣布了一项名为“ DocumentDB”的新“ NoSQL”服务(http://azure.microsoft.com/en-us/documentation/services/documentdb/)
DocumentDB而不是存储属性列表(如Tables一样),而是存储JSON对象。正在对整个对象建立索引-因此可以根据存储对象的每个属性和任何嵌套属性来创建有效的查询。
微软表示,DocumentDB也提供高性能和可伸缩性。
如果是这样-为什么有人会在DocumentDB上使用表存储?听起来DocumentDB提供了与Tables相同的功能,但是具有附加功能,例如可以对任何内容建立索引。
如果有人可以在DocumentDB和Table Storage之间进行比较,我会很高兴,并强调每个优点和缺点。
两者都是NoSQL技术,但是它们有很大的不同。Azure表是简单的键/值存储,不支持复杂的功能,例如复杂的查询(无论如何,大多数查询都将需要完整的分区/表扫描,这会降低性能并节省成本),自定义索引(索引基于仅限于PartitionKey和RowKey,当前您无法在任何其他实体属性上建立索引,并且搜索PartitionKey / RowKey组合以外的其他内容将需要对分区/表进行扫描)或存储过程。您也不能批量读取多个实体的请求(如果所有实体都属于同一分区,则支持通过批量写入请求)。有关Azure Tables的实际应用程序,请参见HERE。
如果您的数据需求(特别是围绕查询的需求)很简单(如上面的示例中所示),则Azure表提供了您所需要的东西,由于价格,性能和存储容量,您最终可能会倾向于使用DocDB。例如,Azure Tables的性能目标是每秒20.000次操作。尝试在DocDB上获得相同的性能水平,将会给您带来更高的服务成本。此外,Azure表受Azure存储帐户(500TB)的容量限制,而DocDB存储受您购买的容量单位限制。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句