|
|
|
|
移动端

2.1 基本概念(6)

《程序员面试笔试真题与解析》本书针对当前各大 IT企业面试笔试中特性与侧重点,精心挑选了 3年以来近百家典型 IT企业的面试笔试真题,这些企业涉及业务包括系统软件、搜索引擎、电子商务、手机 APP、安全关键软件等,面试笔试真题非常具有代表性与参考性。本节为大家介绍基本概念。

作者:猿媛之家来源:机械工业出版社|2017-12-07 11:12

开发者盛宴来袭!7月28日51CTO首届开发者大赛决赛带来技术创新分享

2.1 基本概念(6)

【真题 305】数据库中“事务处理”指的是什么?

答案:事务是数据库中一个单独的执行单元( unit),它通常由高级数据库操作语言(例如 SQL)或编程语言(例如 C++、Java等)编写的用户程序的执行所引起。当在数据库中更改数据成功时,在事务中更改的数据便会提交,不再改变。否则,事务就取消或者回滚,更改无效。

例如网上购物,其交易过程至少包括以下几个步骤的操作:

1)更新客户所购商品的库存信息。

2)保存客户付款信息。

3)生成订单并且保存到数据库中。

4)更新用户相关信息,例如购物数量等。

在正常的情况下,这些操作都将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果在执行的中途遇到突然掉电或是其他意外情况,导致这一系列过程中任何一个环节出了差错,例如在更新商品库存信息时发生异常、顾客银行账户余额不足等,都将导致整个交易过程失败。而一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,例如最后一步更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态,即原有的库存信息没有被更新、用户也没有付款、订单也没有生成。否则,数据库的信息将会不一致,或者出现更为严重的不可预测的后果,数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。

事务必须满足四个属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),即 ACID四种属性。以下将分别对这四种特性进行介绍。

(1)原子性

事务是一个不可分割的整体,为了保证事务的总体目标,事务必须具有原子性,即当数据修改时,要么全都执行,要么全都不执行,即不允许事务部分地完成,避免了只执行这些操作的一部分而带来的错误。

(2)一致性

一个事务在执行之前和执行之后,数据库数据必须保持一致性状态。数据库的一致性状态应该满足模式锁指定的约束,那么在完整执行该事务后,数据库仍然处于一致性状态。为了维护所有数据的完整性,在关系型数据库中,所有的规则必须应用到事务的修改上。数据库的一致性状态由用户来负责,由并发控制机制实现,例如银行转账,转账前后两个账户金额之和应保持不变,由于并发操作带来的数据不一致性通常包括以下几种类型:丢失数据修改、读“脏”数据、不可重复读和产生幽灵数据。

(3)隔离性

也被称为独立性,当两个或多个事务并发执行时,为了保证数据的安全性,将一个事务内部的操作隔离起来,不被其他正在进行的事务看到。例如任何一对事务 T1和 T2,对 T1而言,T2要么在 T1开始之前已经结束,要么在 T1完成之后再开始执行。数据库有四种类型的事务隔离级别:不提交的读、提交的读、可重复的读和串行化。因为隔离性使得每个事务的更新在它被提交之前,对其他事务都是不可见的,所以,实施隔离性是解决临时更新与消除级联回滚问题的一种方式。

(4)持久性

也被称为永久性,事务完成以后, DBMS保证它对数据库中数据的修改是永久性的,当系统或介质发生故障时,该修改也永久保持。持久性一般通过数据库备份与恢复来保证。

严格而言,数据库事务属性都是由数据库管理系统来进行保证的,在整个应用程序的运行过程中,应用程序无须去考虑数据库的 ACID实现。

一般情况下,通过执行 COMMIT(提交)或 ROLLBACK(回滚)语句来终止事务,当执行 COMMIT语句时,自从事务启动以来对数据库所做的一切更改就成为永久性的了,即被写入到磁盘,而当执行 ROLLBACK语句时,自从事务启动以来对数据库所做的一切更改都会被撤销,并且数据库中内容返回到事务开始之前所处的状态。无论什么情况,在事务完成时,都能保证回到一致状态。

【真题 306】下列属于关系数据库的是()。

A.Oracle B.MySQL C.MongoDB D.IMS答案:A、B。根据存储模型的不同,数据库主要可分为网状数据库、关系数据库、树状数据库、面向对象数据库

和层次数据库等。关系数据库的应用最为广泛,关系式数据结构是指把一些复杂的数据结构归结为简单的二元关系(即二维表格形式)。例如某单位的职工关系就是一个二元关系。常见的关系数据库有 Oracle、 DB2、Sybase、SQL Server、Informax和 MySQL等,非关系型数据库有 MongoDB、memcachedb和 Redis等。所以,选项 A和选项 B正确。

对于选项 C,MongoDB 是目前非常流行的一种非关系型数据库( NoSql),它有非常灵活的存储方式。它非常好地实现了面向对象的思想,在 MongoDB数据库中,每一条记录都是一个 Document对象。所以,选项 C错误。

对于选项 D,IMS是 IBM开发的层次数据库,它不是关系数据库,它是最早的大型数据库管理系统。所以,选项 D错误。因此,本题的答案为 A、B。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Java面向对象编程

Java是当前最流行的程序设计语言之一。本书以Java最新版本Java SE5为基础,涵盖了Java SE5最新特性,由浅入深地介绍了Java SE5的主要内容。...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊