Azure CosmosDB (9) Unique Key Constraints,Windows Azure Platform 系列文章目录
《Windows Azure Platform 系列文章目录》
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
在Azure Cosmos DB中,还支持Unique Key Constraints(唯一键约束)。
我们可以在Azure CosmosDB的一个或者多个字段(Field),建立Unique Key Constraints
通过使用Cosmos DB Unique Key(唯一键约束),可以保证数据是唯一的,避免出现重复的数据。
举个例子,假设我们使用Azure Comos DB,创建员工管理系统(CRM, Customer Relationship Management),里面的字段有:
- First Name: 名
- Last Name:姓
- Email Address: 邮箱地址
- Department: 部门
我们可以使用Department,作为分区键(Partition Key),有关分区键的内容,可以参考:Azure CosmosDB (7) 分区键Partition Key
对于Unique Key Constraints(唯一键约束),我们可以设计:
(1)使用Email Address,作为Unique Key Constraints,这样保证电子邮件的值是唯一的
假设我们插入两条相同的Email Address记录,就会显示不符合Unique Key Constraints错误
(2)使用First Name, Last Name, Email Address和Department,将多个字段作为Unique Key Constraints
假设我们插入两条相同的First Name, Last Name, Email Address和Department记录,就会显示不符合Unique Key Constraints错误
设置Unique Key Constraint时候,我们需要注意以下事项:
1.我们在创建CosmosDB的Collection时候,可以设置Unique Key Constraints。但是创建完毕后,无法修改Unique Key Constraints
2.如果我们需要在已有的Cosmos DB Collection创建Unique Key Constraint,我们可以先创建一个新的空表,里面的字段和现有表结构相同,并加上Unique Key Constraints。
然后使用迁移工具,将数据进行迁移
3.一个唯一键策略最多可以包含 16 个路径值。 例如,值可能/firstName, /lastName,和/address/zipCode。 每个唯一键策略可以具有最多 10 个唯一键约束或组合。 每个唯一索引约束的组合路径不得超过 60 字节。 在前面的示例中,名字、姓氏和电子邮件地址共同构成了一个约束。 此约束使用 16 个可能路径中的 3 个。
4.当一个Collection有Unique Key Constraint,当我们进行增删改查操作的时候,消耗的Request Unit, RU会比较高
5.不支持稀疏的唯一键。 如果缺少某些唯一路径值,这些值将被视为 null 值,并参与唯一性约束。因此,若要符合此约束,只能有一个项为 null 值
6.Unique Key区分大小写。例如,考虑具有设置为的唯一键约束的容器/address/zipcode。 如果您的数据具有一个名为字段ZipCode,Azure Cosmos DB 将插入作为唯一键"null"因为zipcode未与相同ZipCode。 由于区分大小写,无法插入包含 ZipCode 的其他所有记录,因为重复的“null”违反唯一键约束。
