开发者学堂课程【数据库中间件ShardingSphere详解:ShardingSphere-Sharding-JDBC水平分库(2)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/666/detail/11249
ShardingSphere-Sharding-JDBC水平分库(2)
内容介绍:
一.添加操作
二.查询操作
在上节课程中已经配置策略,下面编写测试方法,测试水平分库效果。依旧在项目中text中找到测试类,在其中编写两个方法一个是添加方法一个是查询方法,验证水平分库效果。首先把之前编写测试水平分表的代码增加注释,在上面重新编写测试方法。使用编写的方法测试水平分库。
一.添加操作
首先编写添加操作,@Test
Public void addCoursedb
() {
}
在其中编写添加代码,先编写方法在创建一个循环,编写方法与前面课程中对水平分表添加测试代码类似,可以直接复制然后快速修改,首先创建一个对象,添加课程名称例如javademo;下面的值非常重要,在进行水平分库是需要根据 user_id 的值进行分库,如果如果user_id 是偶数添加到edu_db_1 数据库中,如果 user_id 是奇数添加 edu_db_2数据库中,现在赋值100为偶数,最后添加课程状态。现在进行分析,添加的数据中 user_id 值为100是偶数,肯定把数据添加到 edu_db_1 中,然后根据 cid 值选择表如果 cid 值为偶数添加到 course_1 中如果 cid 值为奇数添加到 course_2中。不管怎么样,肯定操作 edu_db_1 中的表,edu_db_2 中应该没有数据。
@Test
public void addCourseDb (){
Course course = new Course();
course.setCname("javademo"
);
course setUserld (100L
);
course.setCstatus("Normal
”);
courseMapper.insert(course
);
}
执行代码查看结果,执行结束没有报错,查看数据部分有100,id;目前操作的数据库为 m1,即操作edu_db_1 数据库;cid 值为奇数,把数据存放到course_2 中。即可以在数据库 edu_db_1 中course_2 中找到添加的数据。满足制定的规则,user_id 是偶数操作 m1 数据库即 edu_db_1数据库,cid 是奇数存放到 course_2中。在数据库 edu_db_1 的 course_2 中可以找到添加的数据。查看其他表中并无数据,只有edu_db_1 的 course_2中有数据。符合制定的规则。
添加完成后继续测试,把user_id 值更改为 111,111为奇数会操作edu_db_2 数据库,为了区分上面的测试把课程状态修改为 Normal1,执行代码,查看最终是否满足要求。执行结果操作 m2数据库即edu_db_2数据库,cid 值为奇数操作 course_2表,可以在edu_db_2数据库的course_2表找到添加的数据。
即完成编写的策略,根据库先进行水平分库根据 user_id 奇偶数判断,在做水平分表根据 cid 奇偶数判断,最终把数据放入不同数据库中的不同表中。目前效果做到水平分库,水平分表;其过程都是在配置文件中做的策略的配置。
二.查询操作
完成添加操作,下面进行查询操作。@Test
public void findCourseDb
(){
}
在查询是注意现在规则中有两个值,一个是user_id一个是cid;根据user_id 和 cid 做查询才可以得到最终结果。首先编写条件构造器,设置 user_id 的值wrapper.eq(column:"user_id",val:100L);然后设置 cid 的值
wrapper.eg(column:"cid",val:465162909769531393L)。最终调用方法,courseMapper 中的 select One 方法在返回 course;再输出对象即可完成查询操作。如果可以正常执行会怎么做,user_id是偶数会操作 edu_db_1,cid 是奇数会查找表 course_2;最终定位到edu_db_1 的表 course_2。查看效果能不能准确定位数据库和表。执行代码查看结果,执行成功查看数据是否有误,目前查找m1中course_2,通过策略判断在edu_db_1的表 course_2找到数据然后进行返回,因为策略已经配置。
这是两个最基本的测试方法,现在已经编写完成。现在通过 Shard ing-JDBC完成对水平分库,水平分表后数据的操作,主要部分是在配置文件中配置分库或分表的策略,例如在水平分库配置文件中分库策略,分表策略,分布情况等还可以配置多个数据源。通过 Shard ing-JDBC完成对水平分库,水平分表。