热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

跨分区使用相同ID创建文档失败

我们正在尝试在不同分区之间创建具有相同ID的文档更新失败,并显示错误在Azur

我们正在尝试在不同分区之间创建具有相同ID的文档

更新失败,并显示错误

在Azure Cosmos中

{
"code": 409,"body": {
"code": "Conflict","message": "Entity with the specified id already exists in the system.,\r\nRequestStartTime: 2019-12-19T08:34:37.5860449Z,RequestEndTime: 2019-12-19T08:34:37.5961787Z,Number of regions attempted:1\r\nResponseTime: 2019-12-19T08:34:37.5961787Z,StoreResult: StorePhysicalAddress: rntbd://cdb-ms-prod-westus1-fd41.documents.azure.com:14086/apps/06af805e-8590-4705-9817-859c9fa7bdc4/services/fb1ffb13-843f-4459-b668-80186964b5fc/partitions/ca683c98-0daf-42f9-8408-cecff98b3d7f/replicas/132212042754425215p/,Lsn: 3,GlobalCommittedLsn: 3,PartitionKeyRangeId: 0,IsValid: True,StatusCode: 409,SubStatusCode: 3302,RequestCharge: 1.57,ItemLsn: -1,SessionToken: -1#3,UsingLocalLsn: False,TransportException: null,ResourceType: Document,OperationType: Create\r\n,microsoft.Azure.Documents.Common/2.7.0"
},"headers": {

},"activityId": "3182f9a5-6c44-48e9-85af-642fcc1b0b86","substatus": 3302
}

在模拟器中
容器Collection_L1_Test的文档创建错误-文件docDbBug.txt:

{
"code": 409,"body": "{\"code\":\"Conflict\",\"message\":\"Message: {\\\"Errors\\\":[\\\"Resource with specified id or name already exists.\\\",\\\"Resource with id already exists with a conflicting hashed partition key,Please retry with a different partition key.\\\"]}\\r\\nactivityId: f8e002d8-04e9-4a69-821b-01ca483f8789,Request URI: /apps/DocDbApp/services/DocDbServer12/partitions/a4cb4958-38c8-11e6-8106-8cdcd42c33be/replicas/1p/,RequestStats: \\r\\nRequestStartTime: 2019-12-19T08:13:52.5769961Z,RequestEndTime: 2019-12-19T08:13:52.5779926Z,Number of regions attempted:1\\r\\nResponseTime: 2019-12-19T08:13:52.5779926Z,StoreResult: StorePhysicalAddress: rntbd://127.0.0.1:10253/apps/DocDbApp/services/DocDbServer12/partitions/a4cb4958-38c8-11e6-8106-8cdcd42c33be/replicas/1p/,Lsn: 203,GlobalCommittedLsn: -1,PartitionKeyRangeId: 1,SessionToken: 203,OperationType: Create\\r\\n,SDK: microsoft.Azure.Documents.Common/2.7.0\"}","activityId": "f8e002d8-04e9-4a69-821b-01ca483f8789","substatus": 3302
}

从https://docs.microsoft.com/en-us/azure/cosmos-db/unique-keys看来,Id的唯一性在上述实验的分区级别上
ID必须在集合级别唯一

假设分区键+ id是集合内的唯一组合是不安全的吗?

P.S。可以通过先将docDbBug.txt添加到一个cosmos DB(SQL类型)中,然后尝试在同一集合中添加docDbBugUpdate.txt来实现repro。
(两个文件都已附加)



可以使用Cosmos DB集合中id和partitionkey的组合来唯一地标识文档。

这里的问题可能是由于分区键值很大。

“如果有多个具有相同的前100个字节的分区键,则这些逻辑分区将被服务视为相同的逻辑分区。” 请参阅https://docs.microsoft.com/en-us/azure/cosmos-db/large-partition-keys


推荐阅读
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了如何使用iptables添加非对称的NAT规则段,以实现内网穿透和端口转发的功能。通过查阅相关文章,得出了解决方案,即当匹配的端口在映射端口的区间内时,可以成功进行端口转发。详细的操作步骤和命令示例也在文章中给出。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
  • PG12新增的VACUUM命令的SKIP_LOCKED选项
    PG12版本的VACUUM命令新增了SKIP_LOCKED选项,该选项使得vacuum命令在遇到被lock住的table时可以跳过并被视为成功执行。之前的版本中,vacuum命令会一直处于等待状态。本文还提到了PostgreSQL 12.1版本的相关信息。 ... [详细]
author-avatar
在刀尖上起舞66_596
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有