分布式数据库实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
任务描述
用JAVA建立一个分布式的应用程序以实现一个简单的 旅行预订系统,分为三个阶段: 1. 实现一个简单的资源管理器(Resource Manager,一 个具有固定的表和操作集的非常简易的数据库系统), 用来支持并发事务的ACID性质(原子性、一致性、独立 性、持久性); 2. 实现一个工作流程控制器(Workflow Controller) 和一个事务管理器(Transaction Manager),用来在 多个资源管理器(Resource Managers)之间实现分布 式事务处理; 3. 实现一些扩展功能。 本课程只要求实现第一部分。
RMI (Remote Method Invocation)
rebind(name, obj) 和 bind(name, obj) lookup(name)
2.RMI与Thread
Thread
run() sleep(long millis) start() 定义线程体 睡眠millis毫秒 启动线程
该目录只有上传权限,请先在本地将所要提交的报告 和程序放在一个目录中,目录使用小组成员学号命名, 如SA06011001&002&003&004,然后上传该目录到 FTP 各阶段成果和程序均在最后一起提交 提交截止日期:2007年1月20日
参考文献
《分布式数据库系统及其应用》 《数据库系统导论》 《Java2 API 大全》 《Java编程思想》
10.原子性的实现
10.原子性的实现
Shadow思想
成果提交
两实验分组相同 每一小组最后提交:
系统设计报告 程序演示报告 小组各成员的任务分工 源程序(需要详细注释,注明所使用的JDK版本)
提交方式
ftp://202.38.79.95 ,“分布式数据库实验”目录下 用户名:addb 密码:addb06
1.运行环境
JAVA环境变量设置 Set path = …………;C:\j2sdk1.4.0_01\bin\ CLASSPATH = .;C:\j2sdk1.4.0_01\lib\tools.jar;C:\j2 sdk1.4.0_01\lib\dt.jar;C:\j2sdk1.4.0_01\ jre\lib\rt.jar;D:\project\
3.Lock Manager (lockmgr包)
lock(xid, thingBeingLocked, read|write) throws DeadlockException ;
unlockAll(xid)
4.ITE和TAE
ITE ------ InvalidTransactionException
文件说明
请注意:用LockManager.java文件和 LockManagerTest.java文件替换 part1和part2中的同名文件(因为 part1和part2中的同名文件有错误!) client.java是用来做最后测试的。
文件说明
Windows下需要Make工具,即make.exe, 需将make.exe放到javac.exe所在目录下。 Windows下需用我们提供的makefile文件 替换part1.tar中的makefile文件。而 Linux下则不用。
精品课件!
精品课件!
谢 谢!
简易的旅行资源管理器
我们提供了资源管理器(Resource Manager)的标准接口(详见 ResourceManager API)。这个接口允许 每一个在RM中存储的表中的行被添加、 删除和修改。你的工作是为每一个我们 提供的接口写出实现程序。
事务处理
RM支持事务处理。一个事务调用RM的 start( )方法来获取一个唯一的事务标识 (transaction id)。所有对RM的后续调 用都要包括这个事务标识。最后,事务 调用commit( )或abort( )方法结束事务处 理。
粒度 tables和tuples 意向锁(IS和IX) lm不直接提供,但可以实现: read – S,S update – S,X insert/delete – X,X
7.读/写wenku.baidu.com盘
readObject() writeObject(Object) e.g. public class FlightsItem implements java.io.Serializable{ ………… }
基本框架结构(Part I) :C/S
Client 1 Client 2 Client n
Resource Manager
Flights, Hotels,
Cars, Customers
1.运行环境
操作系统 Solaris VM or Windows or Linux (Unix)
开发语言 JAVA JDK1.2.2以上版本 (Windows下需要Make工具)
并发控制
并发控制是通过两阶段锁(two-phase locking)来实现的。当一个客户端要求 查询或更新信息时,你的RM要适当地给 相应元组加锁,并在事务正常完成 (commits)或异常中断(abort)时释 放所有的锁。我们提供了一个锁管理器 (lock manager)帮助你完成任务。
文件说明
简易的旅行资源管理器
RM支持并发事务的ACID性质。RM存储着关于航班,出租车,宾 馆房间和客户的数据信息。多个客户端通过一个事务处理界面可 同时访问这个RM以查询和更新数据。这个RM要保证这些并发事 务的执行正确性,即符合ACID性质的要求。
RM存储着下列表:
FLIGHTS (String flightNum, int price, int numSeats, int numAvail) HOTELS(String location, int price, int numRooms, int numAvail) CARS(String location, int price, int numCars, int numAvail) CUSTOMERS(String custName) RESERVATIONS(String custName, int resvType, String resvKey)
1.运行环境
怎样运行 javac *.java 生成 *.class 文件 make runreg 注册端口号 make runserver 运行Server端 make runclient 运行Client端 Ctrl + c to kill the server
2.RMI与Thread
part1.tar LockManager.java LockManagerTest.java Client.java Makefile make.exe
文件说明
part1.tar是源码(详见API),有两个文件夹: lockmgr和transaction。 lockmgr实现了LockManager的功能,你不必修改这个 包中的内容。 transaction提供了一些基本的类以帮助你完成工作, 它包含了ResourceManager的接口。请注意,你不要 修改此文件,你的RM实现要基于名为 ResourceManagerImpl的类(以及一些自己定义的新 类),这个类提供了ResourceManager的接口。你必 须自己编写接口实现代码,以替代目前提供的这个 ResourceManagerImpl.java文件中的接口实现代码。
注意:记录可用的事务号
TAE ------ TransactionAbortedException e.g. deadlock
5.事务可以挂起吗?
挂起 ------ 不commit,也不abort 可以挂起,真正的RM用超时机制强制 abort此类事务 程序中可以不考虑
6.怎样实现多粒度锁?
9.测试与异常
测试(Test) shutdown(), dieNow(), dieBeforePointerSwitch(), dieAfterPointerSwitch()
9.测试与异常
异常处理 InvalidTransactionException, TransactionAbortedException, DeadlockException IOException和RemoteException可以暂 时不考虑
8.Customers和Reservations表可以合并吗?
可以合并 Reservations不含主键,但通常按 custName查询 Reservations(String custName, List resv) resv(int resvType, String resvKey)
用JAVA建立一个分布式的应用程序以实现一个简单的 旅行预订系统,分为三个阶段: 1. 实现一个简单的资源管理器(Resource Manager,一 个具有固定的表和操作集的非常简易的数据库系统), 用来支持并发事务的ACID性质(原子性、一致性、独立 性、持久性); 2. 实现一个工作流程控制器(Workflow Controller) 和一个事务管理器(Transaction Manager),用来在 多个资源管理器(Resource Managers)之间实现分布 式事务处理; 3. 实现一些扩展功能。 本课程只要求实现第一部分。
RMI (Remote Method Invocation)
rebind(name, obj) 和 bind(name, obj) lookup(name)
2.RMI与Thread
Thread
run() sleep(long millis) start() 定义线程体 睡眠millis毫秒 启动线程
该目录只有上传权限,请先在本地将所要提交的报告 和程序放在一个目录中,目录使用小组成员学号命名, 如SA06011001&002&003&004,然后上传该目录到 FTP 各阶段成果和程序均在最后一起提交 提交截止日期:2007年1月20日
参考文献
《分布式数据库系统及其应用》 《数据库系统导论》 《Java2 API 大全》 《Java编程思想》
10.原子性的实现
10.原子性的实现
Shadow思想
成果提交
两实验分组相同 每一小组最后提交:
系统设计报告 程序演示报告 小组各成员的任务分工 源程序(需要详细注释,注明所使用的JDK版本)
提交方式
ftp://202.38.79.95 ,“分布式数据库实验”目录下 用户名:addb 密码:addb06
1.运行环境
JAVA环境变量设置 Set path = …………;C:\j2sdk1.4.0_01\bin\ CLASSPATH = .;C:\j2sdk1.4.0_01\lib\tools.jar;C:\j2 sdk1.4.0_01\lib\dt.jar;C:\j2sdk1.4.0_01\ jre\lib\rt.jar;D:\project\
3.Lock Manager (lockmgr包)
lock(xid, thingBeingLocked, read|write) throws DeadlockException ;
unlockAll(xid)
4.ITE和TAE
ITE ------ InvalidTransactionException
文件说明
请注意:用LockManager.java文件和 LockManagerTest.java文件替换 part1和part2中的同名文件(因为 part1和part2中的同名文件有错误!) client.java是用来做最后测试的。
文件说明
Windows下需要Make工具,即make.exe, 需将make.exe放到javac.exe所在目录下。 Windows下需用我们提供的makefile文件 替换part1.tar中的makefile文件。而 Linux下则不用。
精品课件!
精品课件!
谢 谢!
简易的旅行资源管理器
我们提供了资源管理器(Resource Manager)的标准接口(详见 ResourceManager API)。这个接口允许 每一个在RM中存储的表中的行被添加、 删除和修改。你的工作是为每一个我们 提供的接口写出实现程序。
事务处理
RM支持事务处理。一个事务调用RM的 start( )方法来获取一个唯一的事务标识 (transaction id)。所有对RM的后续调 用都要包括这个事务标识。最后,事务 调用commit( )或abort( )方法结束事务处 理。
粒度 tables和tuples 意向锁(IS和IX) lm不直接提供,但可以实现: read – S,S update – S,X insert/delete – X,X
7.读/写wenku.baidu.com盘
readObject() writeObject(Object) e.g. public class FlightsItem implements java.io.Serializable{ ………… }
基本框架结构(Part I) :C/S
Client 1 Client 2 Client n
Resource Manager
Flights, Hotels,
Cars, Customers
1.运行环境
操作系统 Solaris VM or Windows or Linux (Unix)
开发语言 JAVA JDK1.2.2以上版本 (Windows下需要Make工具)
并发控制
并发控制是通过两阶段锁(two-phase locking)来实现的。当一个客户端要求 查询或更新信息时,你的RM要适当地给 相应元组加锁,并在事务正常完成 (commits)或异常中断(abort)时释 放所有的锁。我们提供了一个锁管理器 (lock manager)帮助你完成任务。
文件说明
简易的旅行资源管理器
RM支持并发事务的ACID性质。RM存储着关于航班,出租车,宾 馆房间和客户的数据信息。多个客户端通过一个事务处理界面可 同时访问这个RM以查询和更新数据。这个RM要保证这些并发事 务的执行正确性,即符合ACID性质的要求。
RM存储着下列表:
FLIGHTS (String flightNum, int price, int numSeats, int numAvail) HOTELS(String location, int price, int numRooms, int numAvail) CARS(String location, int price, int numCars, int numAvail) CUSTOMERS(String custName) RESERVATIONS(String custName, int resvType, String resvKey)
1.运行环境
怎样运行 javac *.java 生成 *.class 文件 make runreg 注册端口号 make runserver 运行Server端 make runclient 运行Client端 Ctrl + c to kill the server
2.RMI与Thread
part1.tar LockManager.java LockManagerTest.java Client.java Makefile make.exe
文件说明
part1.tar是源码(详见API),有两个文件夹: lockmgr和transaction。 lockmgr实现了LockManager的功能,你不必修改这个 包中的内容。 transaction提供了一些基本的类以帮助你完成工作, 它包含了ResourceManager的接口。请注意,你不要 修改此文件,你的RM实现要基于名为 ResourceManagerImpl的类(以及一些自己定义的新 类),这个类提供了ResourceManager的接口。你必 须自己编写接口实现代码,以替代目前提供的这个 ResourceManagerImpl.java文件中的接口实现代码。
注意:记录可用的事务号
TAE ------ TransactionAbortedException e.g. deadlock
5.事务可以挂起吗?
挂起 ------ 不commit,也不abort 可以挂起,真正的RM用超时机制强制 abort此类事务 程序中可以不考虑
6.怎样实现多粒度锁?
9.测试与异常
测试(Test) shutdown(), dieNow(), dieBeforePointerSwitch(), dieAfterPointerSwitch()
9.测试与异常
异常处理 InvalidTransactionException, TransactionAbortedException, DeadlockException IOException和RemoteException可以暂 时不考虑
8.Customers和Reservations表可以合并吗?
可以合并 Reservations不含主键,但通常按 custName查询 Reservations(String custName, List resv) resv(int resvType, String resvKey)