Azure CosmosDB (9) Unique Key Constraints
《Windows Azure Platform 系列文章目录》
在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”违反唯一键约束。
Azure CosmosDB (9) Unique Key Constraints的更多相关文章
- Azure CosmosDB (7) 分区键Partition Key
<Windows Azure Platform 系列文章目录> Azure Cosmos DB使用分区键(Partition Key),来对数据进行水平缩放(Horizon Scale), ...
- Azure CosmosDB (12) 创建Cosmos DB并执行查询语句
<Windows Azure Platform 系列文章目录> The SQL API supports the following aggregate functions. SUM an ...
- Azure CosmosDB (10) Azure Cosmos DB体系结构
<Windows Azure Platform 系列文章目录> Azure Cosmos DB的体系结构分为以下几个部分: 1.Database Accounts Database Acc ...
- Azure CosmosDB (14) 使用Postman访问CosmosDB REST API
<Windows Azure Platform 系列文章目录> 今天研究了一下如何使用Postman访问Azure CosmosDB. CosmosDB API接口,可以参考:https: ...
- 【Azure 存储服务】Python模块(azure.cosmosdb.table)直接对表存储(Storage Account Table)做操作示例
什么是表存储 Azure 表存储是一项用于在云中存储结构化 NoSQL 数据的服务,通过无结构化的设计提供键/属性存储. 因为表存储无固定的数据结构要求,因此可以很容易地随着应用程序需求的发展使数据适 ...
- mySQL中删除unique key的语法
CREATE TABLE `good_booked` ( `auto_id` int(10) NOT NULL auto_increment, `good_id` int(11) default ...
- Mysql如何修改unique key
link:http://www.netingcn.com/mysql-modifyunique-key.html mysql可以使用unique key来确保数据的准确性,unique key可以是一 ...
- mysql中key 、primary key 、unique key 与index区别
一.key与primary key区别 CREATE TABLE wh_logrecord ( logrecord_id ) NOT NULL auto_increment, ) default NU ...
- 不允许对索引显式地使用 DROP INDEX,该索引正用于 UNIQUE KEY
[转载]http://blog.csdn.net/w87875251l/article/details/7929657 不允许对索引显式地使用 DROP INDEX,该索引正用于 UNIQUE KEY ...
随机推荐
- sessionFactory中的openSession和getCurrentSession的一些注意事项
今天进行Hibernate测试时遇到了一个问题 我在用sessionFactory生产seesion时出现了故障,使用getCurrentsesstion时产生异常: Exception in thr ...
- 第二次scrum冲刺
一.第二次冲刺任务 Scrum是在已有的基础上实现读者查询书籍的功能. 二.用户故事 用户输入账号.密码 用户输入需要查询的书籍 系统显示用户输入的信息的详细信 ...
- .NET并行计算和并发:Task
任务不是线程. 任务运行的时候需要使用线程,任务并没有取代线程.
- jcifs windows 域账户单点登录(转)
1.首先从http://jcifs.samba.org 这个站点下载 jcifs-1.3.2.jar包. 2.把这个包放到相应的lib文件下面. 3.对web.xml文件进行配置,添加如下内容 < ...
- vue+koa实现简单的图书小程序(2)
记录一下实现我们图书的扫码功能: https://developers.weixin.qq.com/miniprogram/dev/api/scancode.html要多读文档 scanBook () ...
- (转)hibernate 之hiberante.hbm2ddl.auto 参数的配置
我们在搭建环境的时候,在配置文件中有一个属性标签为: 完整配置如下 <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernat ...
- SQL字符串处理!
一.字符转换函数1.ASCII()返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错. 2.CHA ...
- 搭建EOS未完
纯净机器上部署 EOS 测试网 演示的系统为 Ubuntu 18.04 LTS,内存8g以上,硬盘300g+ clone EOS代码 们以EOS-Mainnet仓库部署,(EOS-Mainnet是部署 ...
- Django JWT Token RestfulAPI用户认证
一般情况下我们Django默认的用户系统是满足不了我们的需求的,那么我们会对他做一定的扩展 创建用户项目 python manage.py startapp users 添加项目apps INSTAL ...
- Centos7.5系统 SSH升级到7.9
SSH7.9安装 #!/bin/bash#删除旧版ssh包 危险操作,不删除也可以安装,建议跳过此操作.#rpm -e `rpm -qa | grep openssh` #安装zlib依赖包wget ...