分布式数据库实验_第1页
分布式数据库实验_第2页
分布式数据库实验_第3页
分布式数据库实验_第4页
分布式数据库实验_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DistributedTravelReservationSystem,(Part),任务描述,用JAVA建立一个分布式的应用程序以实现一个简单的旅行预订系统,分为三个阶段:1.实现一个简单的资源管理器(ResourceManager,一个具有固定的表和操作集的非常简易的数据库系统),用来支持并发事务的ACID性质(原子性、一致性、独立性、持久性);2.实现一个工作流程控制器(WorkflowController)和一个事务管理器(TransactionManager),用来在多个资源管理器(ResourceManagers)之间实现分布式事务处理;3.实现一些扩展功能。本课程只要求实现第一部分。,简易的旅行资源管理器,RM支持并发事务的ACID性质。RM存储着关于航班,出租车,宾馆房间和客户的数据信息。多个客户端通过一个事务处理界面可同时访问这个RM以查询和更新数据。这个RM要保证这些并发事务的执行正确性,即符合ACID性质的要求。RM存储着下列表:FLIGHTS(StringflightNum,intprice,intnumSeats,intnumAvail)HOTELS(Stringlocation,intprice,intnumRooms,intnumAvail)CARS(Stringlocation,intprice,intnumCars,intnumAvail)CUSTOMERS(StringcustName)RESERVATIONS(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的接口。你必须自己编写接口实现代码,以替代目前提供的这个ResourceManagerImpl.java文件中的接口实现代码。,文件说明,请注意:用LockManager.java文件和LockManagerTest.java文件替换part1和part2中的同名文件(因为part1和part2中的同名文件有错误!)client.java是用来做最后测试的。,文件说明,Windows下需要Make工具,即make.exe,需将make.exe放到javac.exe所在目录下。Windows下需用我们提供的makefile文件替换part1.tar中的makefile文件。而Linux下则不用。,基本框架结构(PartI):C/S,Flights,Hotels,Cars,Customers,1.运行环境,操作系统SolarisVMorWindowsorLinux(Unix)开发语言JAVAJDK1.2.2以上版本(Windows下需要Make工具),1.运行环境,JAVA环境变量设置Setpath=;C:j2sdk1.4.0_01binCLASSPATH=.;C:j2sdk1.4.0_01libtools.jar;C:j2sdk1.4.0_01libdt.jar;C:j2sdk1.4.0_01jrelibrt.jar;D:project,1.运行环境,怎样运行javac*.java生成*.class文件makerunreg注册端口号makerunserver运行Server端makerunclient运行Client端Ctrl+ctokilltheserver,2.RMI与Thread,RMI(RemoteMethodInvocation)rebind(name,obj)和bind(name,obj)lookup(name),2.RMI与Thread,Threadrun()定义线程体sleep(longmillis)睡眠millis毫秒start()启动线程,3.LockManager(lockmgr包),lock(xid,thingBeingLocked,read|write)throwsDeadlockException;unlockAll(xid),4.ITE和TAE,ITE-InvalidTransactionException注意:记录可用的事务号TAE-TransactionAbortedExceptione.g.deadlock,5.事务可以挂起吗?,挂起-不commit,也不abort可以挂起,真正的RM用超时机制强制abort此类事务程序中可以不考虑,6.怎样实现多粒度锁?,粒度tables和tuples意向锁(IS和IX)lm不直接提供,但可以实现:readS,SupdateS,Xinsert/deleteX,X,7.读/写磁盘,readObject()writeObject(Object)e.g.publicclassFlightsItemimplementsjava.io.Serializable,8.Customers和Reservations表可以合并吗?,可以合并Reservations不含主键,但通常按custName查询Reservations(StringcustName,Listresv)resv(intresvType,StringresvKey),9.测试与异常,测试(Test)shutdown(),dieNow(),dieBeforePointerSwitch(),dieAfterPointerSwitch(),9.测试与异常,异常处理InvalidTransactionException,TransactionAbortedException,DeadlockExceptionIOException和RemoteException可以暂时不考虑,10.原子性的实现,10.原子性的实现Shadow思想,成果提交,两实验分组相同每一小组最后提交:系统设计报告程序演示报告小组各成员的任务分工源程序(需要详细注释,注明所使用的JDK版本),提交方式,5,“分布式数据库实验”目录下用户名:addb密码:addb0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论