DocumentDB中主键的最佳实践

时间:2015-07-29 12:24:24

标签: azure azure-cosmosdb nosql

我正在使用azure DocumentDB开发一个网站。我需要创建唯一且短的主键。

由于documentDB中没有可用的自动增量,有任何好方法可以解决这个问题。

我希望得到最佳实践建议的答案。谢谢

3 个答案:

答案 0 :(得分:4)

我见过的最常见的做法是在创建要添加/插入的新文档时简单地使用分配的GUID。您还可以指定Indexing Policy。这有助于支持您需要根据这些文档中的其他属性查找文档的情况。

如果您通常确切地知道要检索哪个文档,那么创建自定义复合键也很有用。在这种情况下,它取决于单个应用程序,以确定创建复合值的最佳方法。

答案 1 :(得分:4)

我有一个文档类,其主键名为PrimaryKey

public class Document<T> : BaseDocument, IDocument<T>
    {
        [JsonProperty(PropertyName = "id")]
        public virtual T PrimaryKey { get; set; }
    }

由于文档db主键是 id (小写必需),您可以使用 Newtonsoft.Json 的JSONProperty替换id,这将自动获取序列化id的名称中的PrimaryKey值。

答案 2 :(得分:-1)

如果您需要增量,数字和唯一键,则可以使用Javascript日期new Date().getTime()(以毫秒为单位)作为每个文档的唯一标识符。这样做的好处是,如果您需要按范围搜索文档,则可以将此属性配置为范围索引并执行有效范围搜索。根据您的应用程序,在相同的毫秒内创建2个文档的可能性非常小。