我应该使用Id属性

时间:2017-02-20 10:24:24

标签: identity azure-cosmosdb

documentdb中的文档必须具有唯一的id属性。

每个文档还有一个文档链接。这个链接似乎完成了主键在关系数据库表中实现的大部分角色,特别是指一个独特的文档。

对于文档链接,我应该使用Id属性?如果我想在文档中存储稳定的标识符,是否有理由存储ID而不是文档链接?

2 个答案:

答案 0 :(得分:1)

当与配置的分区键值组合时,id(可设置)和_rid(由DocumentDB生成)都是集合的唯一键。大多数应用程序只使用idid的主要优点是它是用户生成的。

然而,使用_rid有一些好处:

  • 它是全球唯一的,但不像Guid那样长。
  • 它是分层的,因此您不需要跟踪数据库,集合和文档ID - 只需_rid
  • 这是一个单调递增的值,对于某些用例来说是一个有用的属性(注意:在分区键中增加,不能保证跨分区键的顺序)

答案 1 :(得分:0)

我认为你可以选择使用链接字段或存储id字段并在代码中构建链接。后者的延迟成本只有微不足道的成本,因此完全取决于您将其存储为外键。请注意,尽管在非外国关键环境下从ids手工建立链接往往较少。

一些背景......链接字段有点遗留,虽然仍然有用,但可能永远不会消失。当DocumentDB第一次出现时,您无法手工构建自己的链接。如果有记忆,他们会在2015年末或2016年初修复这段时间。我怀疑,如果他们不得不重新做一遍,他们会用手工制作的链接完成所有工作。