《分布式数据库实验精选PPT.ppt》由会员分享,可在线阅读,更多相关《分布式数据库实验精选PPT.ppt(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、分布式数据库实验第1页,此课件共29页哦任务描述n用JAVA建立一个分布式的应用程序以实现一个简单的旅行预订系统,分为三个阶段:n1.实现一个简单的资源管理器(Resource Manager,一个具有固定的表和操作集的非常简易的数据库系统),用来支持并发事务的ACID性质(原子性、一致性、独立性、持久性);n2.实现一个工作流程控制器(Workflow Controller)和一个事务管理器(Transaction Manager),用来在多个资源管理器(Resource Managers)之间实现分布式事务处理;n3.实现一些扩展功能。n本课程只要求实现第一部分。第2页,此课件共29页哦简
2、易的旅行资源管理器nRM支持并发事务的ACID性质。RM存储着关于航班,出租车,宾馆房间和客户的数据信息。多个客户端通过一个事务处理界面可同时访问这个RM以查询和更新数据。这个RM要保证这些并发事务的执行正确性,即符合ACID性质的要求。nRM存储着下列表:nFLIGHTS(String flightNum,int price,int numSeats,int numAvail)nHOTELS(String location,int price,int numRooms,int numAvail)nCARS(String location,int price,int numCars,int n
3、umAvail)nCUSTOMERS(String custName)nRESERVATIONS(String custName,int resvType,String resvKey)第3页,此课件共29页哦简易的旅行资源管理器n我们提供了资源管理器(Resource Manager)的标准接口(详见ResourceManager API)。这个接口允许每一个在RM中存储的表中的行被添加、删除和修改。你的工作是为每一个我们提供的接口写出实现程序。第4页,此课件共29页哦事务处理nRM支持事务处理。一个事务调用RM的start()方法来获取一个唯一的事务标识(transaction id)。所
4、有对RM的后续调用都要包括这个事务标识。最后,事务调用commit()或abort()方法结束事务处理。第5页,此课件共29页哦并发控制n并发控制是通过两阶段锁(two-phase locking)来实现的。当一个客户端要求查询或更新信息时,你的RM要适当地给相应元组加锁,并在事务正常完成(commits)或异常中断(abort)时释放所有的锁。我们提供了一个锁管理器(lock manager)帮助你完成任务。第6页,此课件共29页哦文件说明npart1.tarnLockManager.javanLockManagerTest.javanClient.javanMakefilenmake.ex
5、e第7页,此课件共29页哦文件说明npart1.tar是源码(详见API),有两个文件夹:lockmgr和transaction。nlockmgr实现了LockManager的功能,你不必修改这个包中的内容。ntransaction提供了一些基本的类以帮助你完成工作,它包含了ResourceManager的接口。请注意,你不要修改此文件,你的RM实现要基于名为ResourceManagerImpl的类(以及一些自己定义的新类),这个类提供了ResourceManager的接口。你必须自己编写接口实现代码,以替代目前提供的这个ResourceManagerImpl.java文件中的接口实现代码。
6、第8页,此课件共29页哦文件说明n请注意:用请注意:用LockManager.java文件和文件和LockManagerTest.java文件替换文件替换part1和和part2中的同名文件(因为中的同名文件(因为part1和和part2中的同名文件有错误!)中的同名文件有错误!)client.java是用来做最后测试的。是用来做最后测试的。第9页,此课件共29页哦文件说明nWindows下需要Make工具,即make.exe,需将make.exe放到javac.exe所在目录下。nWindows下需用我们提供的makefile文件替换part1.tar中的makefile文件。而Linux下
7、则不用。第10页,此课件共29页哦基本框架结构(Part I):C/SResourceManagerFlights,Hotels,Cars,CustomersClient 1Client 2Client n第11页,此课件共29页哦1.运行环境n操作系统Solaris VM or Windows or Linux(Unix)n开发语言JAVA JDK1.2.2以上版本 (Windows下需要Make工具)第12页,此课件共29页哦1.运行环境nJAVA环境变量设置Set path=;C:j2sdk1.4.0_01binCLASSPATH=.;C:j2sdk1.4.0_01libtools.ja
8、r;C:j2sdk1.4.0_01libdt.jar;C:j2sdk1.4.0_01jrelibrt.jar;D:project 第13页,此课件共29页哦1.运行环境n怎样运行javac*.java 生成 *.class 文件make runreg 注册端口号make runserver 运行Server端make runclient 运行Client端Ctrl+c to kill the server第14页,此课件共29页哦2.RMI与ThreadnRMI(Remote Method Invocation)rebind(name,obj)和 bind(name,obj)lookup(na
9、me)第15页,此课件共29页哦2.RMI与ThreadnThread run()定义线程体 sleep(long millis)睡眠millis毫秒 start()启动线程第16页,此课件共29页哦3.Lock Manager (lockmgr包)nlock(xid,thingBeingLocked,read|write)throws DeadlockException;nunlockAll(xid)第17页,此课件共29页哦4.ITE和TAEnITE-InvalidTransactionException 注意:记录可用的事务号nTAE-TransactionAbortedExceptio
10、n e.g.deadlock第18页,此课件共29页哦5.事务可以挂起吗?n挂起-不commit,也不abortn可以挂起,真正的RM用超时机制强制abort此类事务n程序中可以不考虑第19页,此课件共29页哦6.怎样实现多粒度锁?n粒度 tables和tuplesn意向锁(IS和IX)lm不直接提供,但可以实现:read S,S update S,X insert/delete X,X第20页,此课件共29页哦7.读/写磁盘nreadObject()nwriteObject(Object)e.g.public class FlightsItem implements java.io.Seri
11、alizable 第21页,此课件共29页哦8.Customers和Reservations表可以合并吗?n可以合并nReservations不含主键,但通常按custName查询nReservations(String custName,List resv)nresv(int resvType,String resvKey)第22页,此课件共29页哦9.测试与异常n测试(Test)shutdown(),dieNow(),dieBeforePointerSwitch(),dieAfterPointerSwitch()第23页,此课件共29页哦9.测试与异常n异常处理 InvalidTransa
12、ctionException,TransactionAbortedException,DeadlockException IOException和RemoteException可以暂时不考虑第24页,此课件共29页哦10.原子性的实现10.原子性的实现nShadow思想第25页,此课件共29页哦成果提交n两实验分组相同n每一小组最后提交:n系统设计报告n程序演示报告n小组各成员的任务分工n源程序(需要详细注释,注明所使用的JDK版本)第26页,此课件共29页哦提交方式nftp:/202.38.79.95,“分布式数据库实验”目录下n用户名:addb 密码:addb06n该目录只有上传权限,请先在本地将所要提交的报告和程序放在一个目录中,目录使用小组成员学号命名,如SA06011001&002&003&004,然后上传该目录到FTP n各阶段成果和程序均在最后一起提交n提交截止日期:2007年1月20日第27页,此课件共29页哦参考文献n分布式数据库系统及其应用n数据库系统导论nJava2 API 大全nJava编程思想第28页,此课件共29页哦谢 谢!第29页,此课件共29页哦