计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

异地并行设计中WEB数据库设计*(1)(3)

2014-10-28 01:04
导读:图 3 关系表格视图 4.1 并发控制 的处理 在多个用户同时访问一个数据库时就产生并发问题,特别是在其中一些用户对数据库有添加或删除修改等操作时,

图 3 关系表格视图 4.1 并发控制 的处理 在多个用户同时访问一个数据库时就产生并发问题,特别是在其中一些用户对数据库有添加或删除修改等操作时,那么其他所获得的数据可能是一塌糊涂,甚至造成整个数据访问的冲突、终止,从而使系统发生混乱以至崩溃。 rcds采用的解决办法是锁定技术,总体上分为共享锁定和排它锁定两种类型(如图4)。前者是指同时有几个过程共享一个锁定,比如一个用户(或客户)正在读取一个数据,虽然在这之前他已经对该数据设置了锁(lock),但其他用户同样可以(也只能是)读取它。而排他锁定一般应用于对数据进行修改或更新(包括添加删除等)操作,即是用户在修改一个数据之前设置了锁定,在一定的时间里其他用户是不能访问到该数据的,只有等待锁定解除(unlock)才能进行访问到它,当然在计算机处理的时候,其他的用户一般是感觉不到有这个等待时间的。通过这样的处理,就保证了数据的一致性。
a) 共享锁定
b) 排它锁定 图 4 安全锁定类型 在 ado进行数据库操作时,它的锁定类型相对来说复杂一些。打开记录集时,可以指定锁定类型。锁定类型决定了当不止一个用户同时试图改变一个记录时,数据库应如何处理。ado中的锁定主要有以下四种类型: l adlockreadonly 指定你不能修改记录集中的记录 l adlockpessimistic 指定在编辑一个记录时,立即锁定它 l adlockoptimstic 指定只有调用记录集的update方法时,才锁定记录 l adlockbatchoptimstic 指定记录只能成批地更新 在缺省情况下,记录集使用只读锁定。要指定不同的锁定类型,可以在打开记录集时包含这些锁定常量之一。部分代码如下: … … set myconn=sever.createobject(“adodb.connection”) //定义数据库连接myconn set rs=sever.createobject(“adodb.recordset”) //定义返回数据记录集 myconn.open “byktdb.dsn”//建立应用程序与数据源的连接 rs.open “select * from mytable”, myconn, adopendynamic, adlockpessimistic //进行数据库操作,并且设置锁定 rs.close myconn.close … … 4.2产品数据一致性处理 数据的安全因素除了前面所提到的并行控制之外,还要考虑事务处理。网络数据库有其不同的地方,例如:假设某个时间有一个设计人员在你的站点上索取一些设计信息,有关的设计信息存储在两个表中。一个表用来保存该设计者的信息,另一个表包含了要索取的设计信息。该设计人员的信息已经输入了第一个表中。但是,就在这时,发生了意外情况,一道闪电击中了你的服务器,使第二个表没有被更新。在这种情况下,一个健壮的系统就必须保证最后的结果是两个表都没有被更新过。这时候事务处理就发挥了重要的功效。 使用事务处理,你可以防止第二个表没有被更新而第一个表被更新的情况出现:当一组语句构成一个事务处理时,如果一个语句没有执行成功,则所有的语句都不成功。不管是针对多个表,还是进行表内多个记录的操作,它们所需要的安全保证是一样的。事务处理的实 现代 码如下: … … set myconn=sever.createobject(“ adodb.connection”) myconn.open “byktdb.dsn” myconn.begintrans //事务处理开始 myconn.execute “ insert datatable(num) values( ‘ 3628 ’ )” myconn.execute “ insert shipping (address) values( ‘ paris,france ’ )” myconn.committrans //事务处理结束 myconn.close … … 在上面这段代码中,用 begintrans方法和committrans方法来标记事务处理的开始和结束。在begintrans方法被调用之后,committrans方法被调用之前,不管出现什么错误,两个表都不会被更新,在这个过程中所有处理的数据都保持了完全可靠的一致性。 共2页: 1 [2] 下一页 论文出处(作者):孙延明 赖朝安 龚
上一篇:软科学学术论文质量评价系统(1) 下一篇:没有了