【文档说明】分布式数据库实验课件.ppt,共(29)页,310.366 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92356.html
以下为本文档部分文字说明:
DistributedTravelReservationSystem(PartⅠ)任务描述用JAVA建立一个分布式的应用程序以实现一个简单的旅行预订系统,分为三个阶段:1.实现一个简单的资源管理器(ResourceManager,一个具有固定的表和操作集的非常简易的数据库系统),用来支
持并发事务的ACID性质(原子性、一致性、独立性、持久性);2.实现一个工作流程控制器(WorkflowController)和一个事务管理器(TransactionManager),用来在多个资源管理器(Reso
urceManagers)之间实现分布式事务处理;3.实现一些扩展功能。本课程只要求实现第一部分。简易的旅行资源管理器RM支持并发事务的ACID性质。RM存储着关于航班,出租车,宾馆房间和客户的数据信息。多个客户端通过一个事务处理界面可同时访问这个RM以查询和更新数据。这
个RM要保证这些并发事务的执行正确性,即符合ACID性质的要求。RM存储着下列表:FLIGHTS(StringflightNum,intprice,intnumSeats,intnumAvail)HOTELS(Stringlocation,intprice,int
numRooms,intnumAvail)CARS(Stringlocation,intprice,intnumCars,intnumAvail)CUSTOMERS(StringcustName)RESERV
ATIONS(StringcustName,intresvType,StringresvKey)简易的旅行资源管理器我们提供了资源管理器(ResourceManager)的标准接口(详见ResourceManagerAPI)。这个接口允许每一个在RM中存储的
表中的行被添加、删除和修改。你的工作是为每一个我们提供的接口写出实现程序。事务处理RM支持事务处理。一个事务调用RM的start()方法来获取一个唯一的事务标识(transactionid)。所有对RM的后续调用都要包括这个
事务标识。最后,事务调用commit()或abort()方法结束事务处理。并发控制并发控制是通过两阶段锁(two-phaselocking)来实现的。当一个客户端要求查询或更新信息时,你的RM要适当地给相应元组加锁,并在事务正常完成(commits)或异常中断(abort)时释放所有
的锁。我们提供了一个锁管理器(lockmanager)帮助你完成任务。文件说明part1.tarLockManager.javaLockManagerTest.javaClient.javaMakefilemake.exe文件说明part1.tar
是源码(详见API),有两个文件夹:lockmgr和transaction。lockmgr实现了LockManager的功能,你不必修改这个包中的内容。transaction提供了一些基本的类以帮助你完成工作,它包含了ResourceManager
的接口。请注意,你不要修改此文件,你的RM实现要基于名为ResourceManagerImpl的类(以及一些自己定义的新类),这个类提供了ResourceManager的接口。你必须自己编写接口实现代码,以替代目前提供的这个Reso
urceManagerImpl.java文件中的接口实现代码。文件说明请注意:用LockManager.java文件和LockManagerTest.java文件替换part1和part2中的同名文件(因
为part1和part2中的同名文件有错误!)client.java是用来做最后测试的。文件说明Windows下需要Make工具,即make.exe,需将make.exe放到javac.exe所在目录下。Windows下需用我们提供的makef
ile文件替换part1.tar中的makefile文件。而Linux下则不用。基本框架结构(PartI):C/SResourceManagerFlights,Hotels,Cars,CustomersClient1Client2Clientn1.运行环境操作系
统SolarisVMorWindowsorLinux(Unix)开发语言JAVAJDK1.2.2以上版本(Windows下需要Make工具)1.运行环境JAVA环境变量设置Setpath=…………;C:\j2sdk1.4.0_01\bin\CLASSPATH=.;C:\j2sdk
1.4.0_01\lib\tools.jar;C:\j2sdk1.4.0_01\lib\dt.jar;C:\j2sdk1.4.0_01\jre\lib\rt.jar;D:\project\1.运行环境怎样运行javac*.java生成*.class文件makerunreg注册端口号m
akerunserver运行Server端makerunclient运行Client端Ctrl+ctokilltheserver2.RMI与ThreadRMI(RemoteMethodInvocation)rebind(nam
e,obj)和bind(name,obj)lookup(name)2.RMI与ThreadThreadrun()定义线程体sleep(longmillis)睡眠millis毫秒start()启动线程3.Lock
Manager(lockmgr包)lock(xid,thingBeingLocked,read|write)throwsDeadlockException;unlockAll(xid)4.ITE和TAEITE------InvalidTransactionException注意:记
录可用的事务号TAE------TransactionAbortedExceptione.g.deadlock5.事务可以挂起吗?挂起------不commit,也不abort可以挂起,真正的RM用超时
机制强制abort此类事务程序中可以不考虑6.怎样实现多粒度锁?粒度tables和tuples意向锁(IS和IX)lm不直接提供,但可以实现:read–S,Supdate–S,Xinsert/delete–X,X
7.读/写磁盘readObject()writeObject(Object)e.g.publicclassFlightsItemimplementsjava.io.Serializable{…………}8.
Customers和Reservations表可以合并吗?可以合并Reservations不含主键,但通常按custName查询Reservations(StringcustName,Listre
sv)resv(intresvType,StringresvKey)9.测试与异常测试(Test)shutdown(),dieNow(),dieBeforePointerSwitch(),dieAfterPointerSwitch()9.测试与异常异常处理InvalidTransa
ctionException,TransactionAbortedException,DeadlockExceptionIOException和RemoteException可以暂时不考虑10.原子性的实现10.原子性的实现Shadow思想成果提交两实验分组相同每一小组最后提交:系统
设计报告程序演示报告小组各成员的任务分工源程序(需要详细注释,注明所使用的JDK版本)提交方式ftp://202.38.79.95,“分布式数据库实验”目录下用户名:addb密码:addb06该目录只有上传权限,请先在本地将所要提
交的报告和程序放在一个目录中,目录使用小组成员学号命名,如SA06011001&002&003&004,然后上传该目录到FTP各阶段成果和程序均在最后一起提交提交截止日期:2007年1月20日参考文献《分布式数据
库系统及其应用》《数据库系统导论》《Java2API大全》《Java编程思想》谢谢!