`
西蜀石兰
  • 浏览: 119005 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

事务和原子性的一些思考

 
阅读更多
最近代码写的有些痛苦,或者说,有些慢。觉得自己不能任性地去写代码,在写代码的时候,应该去考虑代码的复用,以及一些事务性的操作。

学习这东西真的很奇怪,大约在两周前,我大致看了下事务的概念,当时觉得也就一个一致性,并没有什么卵用。而事实上,在短短两周之后,在自己写代码的过程中,就遇到事务性的问题,写事务性的代码。

具体问题是APP的注册,在校验手机和验证码符合之后,会跳转到下一个页面提示用户填写密码,在我看来,之前和APP端定的是两个接口,做完之后稍加思考,就发现了其中的问题,用户注册应该是一个事务,用户名和密码永远应该同步生成。

至于原子性,涉及的具体操作是修改密码,因为确实可以用一句sql解决这个问题,而实际上,也也可以分成三步操作:1.根据用户名获取账户信息;2.比对密码;3.更新密码。仅仅对于这一个问题来说,一句sql确实容易,后者分解操作,反而繁杂;
这里就涉及到了原子性,因为根据手机号获取账户信息这一步操作,在整个业务过程中,会多次使用。那么将这种多次使用的功能单独拿出来,就很有必要了。

最直接的例子是,经过代码重构,Dao层只有四个接口,相比重构之前的8个接口,少了很多。

回头再看MVC框架,在之前的一篇文章中说过 controller-service-dao大多都是一对多的,这种一对多的好处在于,尽量原子化每一层的服务,使得每一层的接口尽可能的少。听起来似乎有点矛盾,尽量细化接口,还能减少接口?

事实上真是如此,就像数据库,不过增删改查四种功能,却支撑起庞大的互联网应用。

代码写到一定阶段,确实应该思考代码怎么写优雅,而不是仅仅为了实现功能。
都说程序员的抽象思维很重要,其实,就在这些不断地思考中慢慢提高的。

回头再看本科看操作系统时,书上提到的一对概念,精简指令集和复杂指令集。现在计算机的芯片大多都是精简指令集,也就是提供原子化的操作供上层应用使用。

而实际上,无论是从芯片还是操作系统,它们所提供的,都是对当前对象来说一些原子化的操作。

所谓的事务,其实早就被先贤们玩透了,我们仅仅是偷换个概念罢了。

分享到:
评论
2 楼 liq123 2016-09-20  
很不错的博客,受益良多。
1 楼 liq123 2016-09-20  
  

相关推荐

    并发的事务中保证数据表数据完整性的一些思考.rar

    ACID是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)四个属性的首字母缩写。原子性确保事务的所有操作要么全部完成,要么全部不完成;一致性则保证事务执行前后,数据库...

    数据库思考题

    ACID(原子性、一致性、隔离性和持久性)是事务处理的四个基本特性。 9. **并发控制**:在多用户环境中,数据库需要处理多个事务同时进行的问题。并发控制机制如锁、多版本并发控制(MVCC)和两阶段提交等,确保了...

    数据库管理与应用-3期(KC004) 任务5-3 事务与游标教学设计.docx

    事务具有ACID特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。当一个事务中的所有操作都成功完成时,我们称之为提交(Commit);如果其中任何一步失败,所有操作...

    从银行转账失败到分布式事务:总结与思考

    事务的四个核心特性是ACID(原子性、一致性、隔离性和持久性): 1. **原子性(Atomicity)**:事务中的所有操作要么全部成功,要么全部失败,不存在部分成功的情况。例如,在银行转账中,用户A账户的资金减少和...

    《SQL数据库应用》复习思考题参照.pdf

    为了确保数据的一致性和完整性,SQL Server 2000支持了分布式事务处理,确保了即使是在多个数据库或多个服务器之间,事务的原子性、一致性、隔离性和持久性(即ACID属性)也能得到保证。 以上内容仅是对文件片段的...

    数据库技术发展的思考PowerPoint演示文稿.ppt

    实用的事务处理技术,如ACID(原子性、一致性、隔离性、持久性)属性,由Jim Gray倡导,确保了在多用户环境下的并发操作和数据一致性,使得数据库系统能够在商业环境中稳定运行。 然而,随着技术的发展,数据库的...

    北邮数据库实验三[整理].pdf

    事务是数据库管理中的基本操作单元,具有原子性、一致性、隔离性和持久性。实验要求你设计和执行事务,同时理解不同事务状态(提交、回滚或未明确结束)对数据的影响。此外,还需要通过多客户端并发操作来体验并发...

    萨师煊版《数据库系统概论习题》

    6. 数据库事务和并发控制:理解事务的概念、ACID属性(原子性、一致性、隔离性和持久性),学习死锁的预防和检测,以及各种并发控制技术,如锁定协议和多版本并发控制(MVCC)。 7. 数据库恢复:包括事务的日志、...

    2013数据库综合实验报告完整版

    5. **事务处理与并发控制**:数据库中的事务处理是保证数据一致性和完整性的关键,报告可能涉及ACID属性(原子性、一致性、隔离性和持久性)以及锁机制。 6. **性能优化**:实验可能涉及到数据库性能的测试和优化,...

    数据库管理与应用-1期 单元实践项目5的实训任务单.pdf

    这要求学生理解事务的ACID属性(原子性、一致性、隔离性和持久性),并学会如何在游标中控制流程和处理数据。 评分标准强调了问题解决能力的重要性,每个问题的分值反映了其在整体学习目标中的地位。同时,学生的...

    数据库原理实验报告电子和丽.doc

    同时,也会涉及数据的插入、更新和删除,以及事务处理的概念,理解事务的ACID特性(原子性、一致性、隔离性和持久性)和并发控制的重要性。 实验报告要求包括对实验步骤的详细记录,调试过程的描述,以及对实验中...

    J2EE学习过程和学习方法总结

    理解事务的ACID属性(原子性、一致性、隔离性和持久性)以及不同的事务隔离级别是学习JTA的重点。 **EJB** EJB是J2EE中的核心组件,提供了服务器端的组件模型。EJB分为三种类型:session beans(处理业务逻辑)、...

    SQL SERVER 2000课程设计的实践与思考.pdf

    6. **事务处理与并发控制**:事务的ACID属性(原子性、一致性、隔离性、持久性)是数据库系统的核心特性。理解并发控制机制,如锁定和行版本控制,对于处理多用户环境下的数据一致性至关重要。 7. **存储过程与...

    MySQL的面试题,以及对应的答案

    - **原子性**:确保事务操作的完整性,要么全部完成,要么全部回滚。 - **一致性**:事务完成后,数据库处于合法状态。 - **隔离性**:并发执行的事务之间不会相互干扰,保证数据的一致性。 - **持久性**:一旦...

    数据库课程设计-银行ATM存取款机系统设计与实现.pdf

    事务处理对于银行系统至关重要,因为它们确保了数据的原子性、一致性、隔离性和持久性。在ATM操作中,如转账,必须在事务中进行,以防止因网络故障或其他异常导致的数据不一致。 最后,项目还强调了使用游标技术,...

    数据库实验

    4. **事务处理**:通过实验,学生需要理解事务的概念,学习如何使用BEGIN、COMMIT、ROLLBACK等语句来管理事务,以保证数据库操作的原子性、一致性、隔离性和持久性。 5. **查询优化**:实验可能包含复杂的SQL查询,...

    学号_姓名_数据库实验一截图(模板)1

    5. 数据库事务:解释什么是事务,以及ACID属性(原子性、一致性、隔离性和持久性)。举例说明在并发环境下如何利用事务处理数据操作。 实验一的结果截图和思考题解答是检验理解和应用的关键。通过清晰的截图,我们...

    VB+SQL版 财务管理信息系统+数据库文件+论文+PPT

    4. **事务处理**:财务管理涉及大量金融交易,这些交易需要在数据库中以原子性、一致性、隔离性和持久性(ACID)特性进行处理。SQL Server支持事务管理,确保了财务数据的完整性和一致性。 5. **安全性与权限管理**...

Global site tag (gtag.js) - Google Analytics