Microsoft Cosmos DB(DocumentDB API)与Cosmos DB(表API)

时间:2017-10-28 04:27:35

标签: azure nosql azure-cosmosdb

Microsoft Cosmos DB包括DocumentDB API,Table API等。我有大约10 TB的数据,并希望有一个快速的键值查找(很少更新和写入,大多数是读取)。添加Microsoft Cosmos DB的链接: https://docs.microsoft.com/en-us/azure/cosmos-db/

  1. 那么我该如何在DocumentDB API和Table API之间做出选择呢?
  2. 或者我应该何时选择DocumentDB API?我什么时候应该选择Table API?
  3. 使用DcoumentDB API存储10 TB数据是一个好习惯吗?

3 个答案:

答案 0 :(得分:11)

引入了Azure Cosmos数据库表API,以使Azure表存储社区可以使用Cosmos DB及其高级索引,地理分布等功能。我们的想法是,使用Azure Table存储的人只需要Cosmos DB提供的更多高级功能,他们只需要更改他们的连接字符串,他们现有的代码就可以使用Cosmos DB。

但是,如果您是绿地客户,那么我建议使用SQL API(以前称为Document DB API),它是Table API的超级集合。我们一直致力于为SQL API提供更多高级特性和功能,对于Table API,我们只是希望保持与Azure Table存储API的兼容性,这种API在多年内没有改变。

您拥有多少数据对您选择的API没有任何影响。它们都具有相同的多模型基础架构,可以处理相同大小的数据,查询负载,分发等。

答案 1 :(得分:6)

  

那么我应该如何在DocumentDB API和Table API之间做出选择?

DocumentDB APITable API之间进行选择主要取决于您要存储的数据类型。 DocumentDB API提供schema-less JSON database engine with SQL querying capabilities,而Table API提供key-value storage database service。由于您提到您的数据基于key-value,因此建议您使用Table API

  

或者我应该何时选择DocumentDB API?我什么时候应该选择Table API?

与上述相同。

  

使用DcoumentDB API存储10 TB数据是一个好习惯吗?

Document DB APITable API都旨在存储大量数据。

但您也可以查看Azure Table Storage。通过Cosmos DB,您可以微调所需的吞吐量以及强大的索引/查询支持,而且需要付出代价。另一方面,Azure Tables具有固定的吞吐量和有限的索引/查询支持,与Cosmos DB相比非常便宜。

您可能会发现此链接有助于详细了解Cosmos DB:https://docs.microsoft.com/en-us/azure/cosmos-db/introduction

答案 2 :(得分:2)

请不要将此标记为偏离主题。

提前知道它可能会有所帮助:如果您正在考虑文档界面,那么实际上存在一个不区分大小写的情况会影响DataContract类(我相信所有其他类)在Cosmos中的转换方式。

在下面的链接讨论中,您将看到Newtonsoft.Json中存在不区分大小写的情况,这会影响您对传递或直接从API获取的对象的处理。并不是说Cosmos有任何缺陷,实际上它非常出色。但是使用文档API,您可能(像我一样)开始简单地将DataContract对象传递给Cosmos(这显然没有错,实际上非常期望从对象API中获得),但是有一些序列化器和命名策略处理程序选项,你可能更善于至少提前意识到这一点。

所以只需添加一个注释,让您通过对象接口了解此行为。讨论在GitHub上进行:

https://github.com/JamesNK/Newtonsoft.Json/issues/815