DocumentDB 中主键的最佳实践
Best Practices for Primary Key in DocumentDB
我正在使用 Azure DocumentDB 开发一个网站。我需要创建唯一且短的主键。
由于documentDB中没有可用的自动递增,有什么好的方法可以解决这个问题。
我希望得到最佳实践建议的答案。谢谢
我见过的最常见的做法是简单地使用创建新文档时分配的 GUID added/inserted。您还可以指定 Indexing Policy。这有助于支持您需要根据这些文档中的其他属性查找文档的情况。
如果您通常确切地知道要检索哪个文档,那么创建自定义复合键也很有用。在这种情况下,由单个应用程序决定创建复合值的最佳方式。
如果需要增量键、数字键和唯一键,可以使用Javascript日期new Date().getTime()
毫秒作为每个文档的唯一标识符。这样做的好处是,如果您需要按范围搜索文档,您可以将此 属性 配置为范围索引并进行高效的范围搜索。根据您的应用程序,在同一毫秒内创建 2 个文档的可能性很小。
我有一个文档 class,其主键名为 PrimaryKey
public class Document<T> : BaseDocument, IDocument<T>
{
[JsonProperty(PropertyName = "id")]
public virtual T PrimaryKey { get; set; }
}
由于document db主键是id(必须小写),可以用Newtonsoft.Json[=17的JSONProperty替换id =], 会自动序列化为id名称中PrimaryKey的值
我正在使用 Azure DocumentDB 开发一个网站。我需要创建唯一且短的主键。
由于documentDB中没有可用的自动递增,有什么好的方法可以解决这个问题。
我希望得到最佳实践建议的答案。谢谢
我见过的最常见的做法是简单地使用创建新文档时分配的 GUID added/inserted。您还可以指定 Indexing Policy。这有助于支持您需要根据这些文档中的其他属性查找文档的情况。
如果您通常确切地知道要检索哪个文档,那么创建自定义复合键也很有用。在这种情况下,由单个应用程序决定创建复合值的最佳方式。
如果需要增量键、数字键和唯一键,可以使用Javascript日期new Date().getTime()
毫秒作为每个文档的唯一标识符。这样做的好处是,如果您需要按范围搜索文档,您可以将此 属性 配置为范围索引并进行高效的范围搜索。根据您的应用程序,在同一毫秒内创建 2 个文档的可能性很小。
我有一个文档 class,其主键名为 PrimaryKey
public class Document<T> : BaseDocument, IDocument<T>
{
[JsonProperty(PropertyName = "id")]
public virtual T PrimaryKey { get; set; }
}
由于document db主键是id(必须小写),可以用Newtonsoft.Json[=17的JSONProperty替换id =], 会自动序列化为id名称中PrimaryKey的值