`
wbj0110
  • 浏览: 1550175 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

MongoDB的优化锁

阅读更多

当从JPA迁移到MongoDB的,你开始意识到有多少以前JPA功能能得到保留。 JPA通过悲观和乐观锁定防止"丢失更新"。乐观锁不最终锁定任何东西,所以它取名为乐观锁或是乐观并发控制。

  "丢失更新"是什么意思?

  现实生活中的例子是,当多个后台任务更新共同实体的不同属性时:

  我们有一个产品实体带有数量和折扣属性,这两个是独立的批次处理器处理的。

  1. StockBatchProcessor 加载产品{数量:1,折扣:0}
  2. Stock更新了数量,所以我们有{数量:5,折扣:0}
  3. DiscountBatchProcessor加载产品{数量:1,折扣:0}
  4. Discount更新了折扣,所以我们有{数量:1,折扣:15}
  5. Stock保存产品{数量:5,折扣:0}
  6. Discount保存产品{数量:1,折扣:15}
  7. 最后保存的数量是1,Stock更新的结果丢失。

  在JPA中,你可以使用@ Version字段(通常是一个自动递增的数字),Hibernate照顾一切。幕后有一个安全机制,检查更新的行数时,给出了具体的版本。如果没有行被更新,但是该版本已经改变,乐观锁定异常被抛出。

UPDATE Product SET quantity=1, discount=15 WHERE version=1;

  但是,如果你的存储不是一个RDBMS系统,而是一个MongoDB数据库,你是要防止更新丢失。幸运的是,Spring Data提供了一套面向文档注释,其中你可以找到一个相同的语义的JPA@ Version注解。只需要装入最新的实体快照,合并的具体属性并更新。

 

  MongoDB的优化锁源码下载

分享到:
评论

相关推荐

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    《深入云计算(MongoDB管理与开发实战详解)》系统全面的介绍了MongoDB开发、管理、维护和性能优化等方方面面。详细而深入,对MongoDB的开发和管理方法进行了详细的讲解,也对MongoDB的工作机制进行了深入的探讨。注重...

    MongoDB优化心得分享

    这里总结下这段时间使用mongo的心得,列出了几个...经实际使用wiredTiger占用的磁盘空间是MMAP的1/5,索引大小是其1/2,查询速度也提高很多,更重要的是该引擎提供了document级别的锁,当集合插入或更新数据时不需要

    深入云计算 MongoDB管理与开发实战详解pdf.part2

    《深入云计算(MongoDB管理与开发实战详解)》系统全面的介绍了MongoDB开发、管理、维护和性能优化等方方面面。详细而深入,对MongoDB的开发和管理方法进行了详细的讲解,也对MongoDB的工作机制进行了深入的探讨。注重...

    2023年Java大厂各知识点综合面试题.rar

    Dubbo、JVM、Kafka、Linux、MongoDB、MyBatis、MySQL、Netty、Nginx、RabbitMQ消息中间件、Redis、Spring、SpringBoot、SpringCloud、SpringMVC、Tomcat、Zookeeper、并发编程、多线程、集合框架、乐观锁与悲观锁...

    万得信息技术Java开发面经.pdf

    ⼋⼤排序算法以及时间空间复杂度 3.JUC 锁:写⼊锁 只读锁 4.ArrayList LinkedList区别 5.MongoDB使⽤ 6.zk能做什么 7.场景题:集群服务器宕机解决⽅案 8.MongoDB和redis区别,分别何时使⽤,MongoDB讲⼀下 9.完全...

    Java、数据库、spring框架等面试题及答案

    乐观锁与悲观锁.pdf 开源框架面试.pdf 多线程面试.pdf 并发编程面试(下).pdf 并发编程(上).pdf zookeeper面试.pdf Tomcat面试.pdf SQL优化面试.pdf Spring面试.pdf SpringMVC面试.pdf SpringCloud面试.pdf ...

    Java架构面试资料合集Spring面试专题及答案MySQL面试Redis面试资料.zip

    Java架构面试资料合集Spring面试专题及答案MySQL面试Redis面试资料: BAT面试常问80题 Dubbo服务框架面试专题及答案整理文档 java筑基(基础)面试专题系列...面试必备之乐观锁与悲观锁 面试必问并发编程高级面试专题

    Java程序员面试题全.zip

    并发+Netty+JVM、java筑基(基础)面试专题系列(一):Tomcat+Mysql+设计模式、JVM与性能优化知识点整理、MySQL性能优化的21个最佳实践、MYSQL、redis、spring、多线程、分布式、面试必备之乐观锁与悲观锁、面试必...

    超全的Java岗面试题库合集.zip

    乐观锁与悲观锁 设计模式 数据库 性能优化 ActiveMQ消息中间件 Dubbo JVM Kafka Linux MongoDB MyBatis MySQL Netty Nginx RabbitMQ消息中间件 Redis Spring SpringBoot SpringCloud SpringMVC Tomcat Zookeeper 四...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    mongodb strom spark java语言 语言语法基础 异常 泛型 内部类 反射 序列化 nIo 匿名类 包装类 优先级 引用 语言工具类库 容器类 集合 链表 map 工具类 系统类 日期类 数字类 字符串+正则 ...

    2020年Java各知识点综合面试题.zip

    ActiiveMQ消息中间件 Dubbo JVM Kafka Linux MongoDB Mybatis Netty Nginx RabbitMQ消息中间件 Redis Spring SpringBoot SpringCloud SpringMVC Tomcat ...乐观锁与悲观锁 设计模式 数据库 性能优化

    Java架构面试笔试专题资料及经验(含答案)和学习笔记.zip

    Java架构面试笔试专题资料及经验(含答案)和学习笔记: ActiveMQ消息中间件面试专题.pdf Dubbo面试专题及答案(下).pdf Dubbo面试及答案(上).pdf java后端面试题答案.pdf ...面试必备之乐观锁与悲观锁.pdf

    Java思维导图xmind文件+导出图片

    基于分布式架构下分布式锁的解决方案实战 分布式架构实现分布式定时调度 分布式架构-中间件 分布式消息通信 消息中间件在分布式架构中的应用 ActiveMQ ActiveMQ高可用集群企业及部署方案 ActiveMQ P2P及PUB/...

    2022年Java各知识点综合大厂面试题.rar

    Dubbo、JVM、Kafka、Linux、MongoDB、MyBatis、MySQL、Netty、Nginx、RabbitMQ消息中间件、Redis、Spring、SpringBoot、SpringCloud、SpringMVC、Tomcat、Zookeeper、并发编程、多线程、集合框架、乐观锁与悲观锁...

    微服务所有资料.rar

    后端:spring+springmvc,linux,mysql事务隔离与锁机制,mongodb,http/tcp,多线程,分布式架构,弹性计算架构,微服务架构,java性能优化 前段:html5,css3,vuejs,webpack,nodejs,Google V8引擎,javascript多...

    重磅-2024年直指大厂Java面试资料大全(全专题100+份).zip

    乐观锁与悲观锁 集合框架 多线程 并发编程 Zookeeper Tomcat SpringMVC SpringCloud SpringBoot Spring Redis RabbitMQ消息中间件 Nginx Netty MySQL MyBatis MongoDB Linux Kafka JVM Dubbo ActiveMQ消息中间件 ...

    Java全能学习面试手册——Java面试题库.zip

    16 27道顶尖的Java多线程、锁、内存模型面试题!.pdf 17 29道常见的Spring面试题!.pdf 18 30个Java经典的集合面试题!.pdf 19 36道面试常问的MyBatis面试题!.pdf 20 40道常问的Java多线程面试题!.pdf 21 55道BAT...

    java8源码-SpringTree:互联网通用技术

    mongodb kafka rocketmq memcached es lamda fork/join ThreadPool 微信支付 Elasticsearch 1:微信支付,暂时只支持公众号网页(调用微信客户端)支付,不支持二维码扫码支付 2:Lamda 函数式编程基础,优化美丽的高...

Global site tag (gtag.js) - Google Analytics