南华大学计算机科学与技术学院实验报告(2011 ~2012 学年度第一学期)课程名称软件设计模式实验名称设计模式UML建模姓名肖喜武学号20094350225专业软件工程班级本09软件02班地点8-212 教师余颖一、实验目的(1)学会如何根据站点的特点对数据库进行分片(2)学会如何实验amoeba软件对数据库实现分片二、实验内容⏹某个公司有三个计算机站点,站点B和站点C分别属于部门2和部门3现在希望在站点B和C上分别频繁访问EMPLOYEE和PROJECT表中有关工作在该部门的雇员和该部门管辖的项目信息。
⏹雇员信息主要是指EMPLOYEE表的NAME,ESSN,SALARY和SUPERSSN属性。
⏹站点A供公司总部(部门1)使用,经常存取为保险目的而记录的DEPENDENT信息外,还定期地存取所有雇员和项目的信息。
请根据这些要求,对该公司关系数据库中的关系进行分片和分布EMPLOYEEFNAME MINIT LNAME ESSN BDATE ADDRESS SEX SALARY SUPRESSN DNO DEPARTEMNTDNAME DNO MGRSSN MGRSTARTDA TEDEPT_LOCATIONDNO DLOCA TIONPROJECTPNAME PNUMER PLOCATION DNOWORKS_ONESSN PNO HOURSDEPENDENTESSN DEPENDENT SEX BDATE RELATIONSHIP三、实验步骤(1)理论分析先根据DEPARTMENT表的主码DNO的值进行水平分片,然后基于外码部门号(DNO)将导出的片段应用到关系EMPLOYEE、PROJECT和DEPPTLOCATIONS上,再在刚才得到的EMPLOYEE片段上进行垂直分片,得到只含熟悉你给{NAME,ESSN,SALARY,SUPERSSN,DNO}的片段。
图2.13给出了EMPD2和EMPD3的混合分片,它包括了分别满足条件DNO=2和DNO=3的EMPLOYEE元组。
类似地,PROJECT、DEPARTMENT和DEPT_LOCATIONS都按部门编号进行水平分片,这些片段根据其相应的部门号分别存储在站点B和部门C上,如图所示:EMPD5 FNAME MINIT LNAME ESSN SALARY SUPERSSN DNOJohn B Smith 123456789 30000 333445555 2Franklin T Wong 333445555 40000 888665555 2Ramesh K Narayan 666884444 38000 333445555 2Joyce A English 453453453 25000 333445555 2DEP5 DNAME DNO MGRSSN MGRSTARTDA TEResearch 2 333445555 2003-05-22DEP5_LOCS DNO LOCATION2 Bellaire2 Sugarlnd2 HoustonDEP5_LOCS ESSN PNO HOURS123456789 1 32.5123456789 2 7.5666884444 3 40.0453453453 1 20.0453453453 2 20.0333445555 2 10.0333445555 3 10.0333445555 10 10.0333445555 20 10.0PROJS55 PANEM PNUMBER PLOCATION DNOProduct X 1 Bellair 2Product Y 2 Ugarlnd 2Product Z 3 Houston 2(a)站点B上的对应于部门2的关系片段MINIT LNAME SSN SALARY SUPERSSN DNO EMPD4FNAMEAlicia J Zelaya 999887777 25000 987654321 4Jennifer S Wallace 987654321 43000 888665555 4Ahmad V Jabbar 987987987 25000 987654321 4DEP4 DNAME DUNMAE MGRSSN MGRSTARTDA TE Administr 4 987654321 2003-01-01DEP5_LOCS DNUMBER LOCATION4 StatlondDEP4_LOCS ESSN PNO HOURS333445555 10 10.0999887777 30 30.0999887777 10 10.0987987987 10 35.0987987987 30 5.0987654321 30 20.09878654321 20 15.0PROJS55 PNAME PNUMBER PLOCATION DNUMComputer 10 Startlond 4Newbenef 30 Startlond 4(b)站点2上的对应于部门4的关系片段图2.13 站点的片段分配1)先以雇员工作的部门(用条件C表述)来分片WORKS_ON,然后进一步以管辖雇员工作项目的部门来分片,如图2.14所示。
图2.14中,片段G1、G2和G3的并集给出了为部门2工作的雇员的所有WORKS_ON元组。
同样的,片段G4、G5和G6的并集给出了部门3工作的雇员的所有WORKS_ON元组。
另一方面,片段G1、G2、G3、G4和G7的并集放到站点B上,把片段G4、G5、G6、G2和G8的并集放到站点C 上,可以看到片段G2和G4在两个站点上均被复制。
G1 ESSN PNO HOURS123456789 1 32.5123456789 2 7.5666884444 3 40.0453453453 1 20.0453453453 2 20.0333445555 2 10.0333445555 3 10.0C2=C AND(PNO IN (SELECT PNUMBER FROM PROJECT WHERE DNO=2))G2 ESSN PNO HOURS3334455555 10 10.0C3=C AND(PNO IN (SELECT PNUMBER FROM PROJECT WHERE DNO=3))G3 ESSN PNO HOURS3334455555 20 10.0C1=C AND (PNO IN (SELECT PNUMBER FROM PROJECT WHERE DNO=1))G4 ESSN PNO HOURSC2= C AND (PNO IN (SELECT PNUMBER FROM PROJECT WHEREDNO=2))G5 ESSN PNO HOURS999887777 30 30.0999887777 10 10.0987987987 10 35.0987987987 30 5.0987654321 30 20.0C3= C AND (PNO IN (SELECT PNUMBER FROM PROJECT WHEREDNO=3))G6 ESSN PNO HOURS3334455555 20 10.0C1= C AND (PNO IN (SELECT PNUMBER FROM PROJECT WHEREDNO=1))G7 ESSN PNO HOURSC2= C AND (PNO IN (SELECT PNUMBER FROM PROJECT WHEREDNO=2))G8 ESSN PNO HOURSC3= C AND(PNO IN (SELECT PNUMBER FROM PROJECT WHERE DNO=3))G9 ESSN PNO HOURSC1= C AND (PNO IN (SELECT PNUMBER FROM PROJECT WHEREDNO=1))注:(a)G1、G2、G3为部门2中的雇员:C=[ESSN IN (SELECT SSN FROM WHERE DNO=2)](B)G4、G5、G6为部门3中的雇员:C=[ESSN IN (SELECT SSN FROM WHERE DNO=3)](C)G7、G8、G9为部门1中的雇员:C=[ESSN IN (SELECT SSN FROM WHERE DNO=1)]图2.14 WORKS_ON 关系的完备且不相交的片段②Amoeba-mysql配置Dbserver.xml的配置,配置集群环境③配置amoeba.xml④配置rule.xml,配置分片规则,根据DNO分片(2)Amoeba-mysql实践①安装后验证amoeba②验证mysql是否能成功连接。
此时端口为3306,真实mysql的端口③启动amoeba④Mysql连接amoeba四、实验总结本次实验总的来说难度比较大,由于从未使用过amoeba而且关于amoeba的资料也十分的缺乏,所以做起来比较困难。
在慢慢熟悉amoeba变形虫这款工具后,最终还是把环境给配置好了,虽然勉强完成了实验,但是依然存在许多问题,希望在以后的学习过程逐渐熟悉amoeba的使用。