《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的更多相关文章

  1. Azure CosmosDB (7) 分区键Partition Key

    <Windows Azure Platform 系列文章目录> Azure Cosmos DB使用分区键(Partition Key),来对数据进行水平缩放(Horizon Scale), ...

  2. Azure CosmosDB (12) 创建Cosmos DB并执行查询语句

    <Windows Azure Platform 系列文章目录> The SQL API supports the following aggregate functions. SUM an ...

  3. Azure CosmosDB (10) Azure Cosmos DB体系结构

    <Windows Azure Platform 系列文章目录> Azure Cosmos DB的体系结构分为以下几个部分: 1.Database Accounts Database Acc ...

  4. Azure CosmosDB (14) 使用Postman访问CosmosDB REST API

    <Windows Azure Platform 系列文章目录> 今天研究了一下如何使用Postman访问Azure CosmosDB. CosmosDB API接口,可以参考:https: ...

  5. 【Azure 存储服务】Python模块(azure.cosmosdb.table)直接对表存储(Storage Account Table)做操作示例

    什么是表存储 Azure 表存储是一项用于在云中存储结构化 NoSQL 数据的服务,通过无结构化的设计提供键/属性存储. 因为表存储无固定的数据结构要求,因此可以很容易地随着应用程序需求的发展使数据适 ...

  6. mySQL中删除unique key的语法

    CREATE TABLE `good_booked` (  `auto_id` int(10) NOT NULL auto_increment,  `good_id` int(11) default ...

  7. Mysql如何修改unique key

    link:http://www.netingcn.com/mysql-modifyunique-key.html mysql可以使用unique key来确保数据的准确性,unique key可以是一 ...

  8. mysql中key 、primary key 、unique key 与index区别

    一.key与primary key区别 CREATE TABLE wh_logrecord ( logrecord_id ) NOT NULL auto_increment, ) default NU ...

  9. 不允许对索引显式地使用 DROP INDEX,该索引正用于 UNIQUE KEY

    [转载]http://blog.csdn.net/w87875251l/article/details/7929657 不允许对索引显式地使用 DROP INDEX,该索引正用于 UNIQUE KEY ...

随机推荐

  1. VBA在WORD应用中如何确定文本是否被选定

    确定文本是否被选定Selection 对象的 Type 属性返回所选内容类型的信息.如果所选内容为插入点,则下列示例显示一条消息. Sub IsTextSelected()    If Selecti ...

  2. JVM逃逸分析

    开启逃逸分析: -server -XX:+DoEscapeAnalysis -XX:+PrintGCDetail -Xmx10m -Xms10m 关闭逃逸分析: -server -XX:-DoEsca ...

  3. readfile() file_get_content f

    php.ini:memory_limit memory_limit是设置内存限制的,如果使用readfile()读取文件就会和这个有关, 调用readfile()函数将打开这个文件,并且将文件内容输出 ...

  4. 高性能JavaScript(1)

    ---------------------------------------------------------------------------------------------------- ...

  5. python实现三级菜单间的前后跳转

    #录入菜单def createMenu():    Menu = {}    provinces = ["陕西","四川","江苏"] sh ...

  6. [C# 基础知识系列]专题四:事件揭秘 (转载)

    引言: 前面几个专题对委托进行了详细的介绍的,然后我们在编写代码过程中经常会听到“事件”这个概念的,尤其是写UI的时候,当我们点击一个按钮后VS就会自动帮我们生成一些后台的代码,然后我们就只需要在Cl ...

  7. aiohttp AppRunner的用法

    参考廖雪峰的aiohttp教程,会出现两个DeprecationWarning, loop argument is deprecated Application.make_handler(...) i ...

  8. VirtualBox 使用物理硬盘

    /******************************************************************************* * VirtualBox 使用物理硬盘 ...

  9. git pull时报错:refusing to merge unrelated histories

    在Github新建一个仓库,写了README文件,然后把本地一个写了仓库上传,首先pull,因为两个仓库不同,发现refusing to merge unrelated histories,无法pul ...

  10. 使用min-device-pixel-ratio媒体功能实现真正的1像素border

    关于设备像素比的知识,想必做过移动端开发的都有接触,这里就不介绍啦,万一有不懂的可以看张鑫旭大神的设备像素比devicePixelRatio简单介绍 由于设备像素比存在的原因,我们在处理设计图的一些边 ...