学习sharding-jdbc 分库分表扩展框架
Posted clypm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习sharding-jdbc 分库分表扩展框架相关的知识,希望对你有一定的参考价值。
前一段时间研究阿里的分库框架cobar-client,cobar-client是基于ibatis的SqlMapClientTemplate进行了一层薄薄的封装,分装成CobarSqlMapClientTemplate,在用户在CRUD的时候可以透明的进行操作,算是现在大多公司分库的一个成熟解决方案,不过现在面临的一些问题:
①不支持分表
②基于ibatis而且2013年后基本维护了,没有进行升级,所以大多公司都基于该思想进行了自己的重写
来看下当当开源的sharding-jdbc,官方网址:点击打开链接
先允许我盗一波图:
好了,看了这么多的介绍,感觉还是很高大上的,注意点有:
①对JDBC API进行了原生态的分装,这是与cobar-client不一样的地方,这就是他可以支持多个第三方ORM框架的关键
②可支持=
,BETWEEN
,IN
等操作,说明,JDBC返回结果后,sharding进行了合并操作,这里面肯定会有性能损耗
③支持分表,这也是cobar-client不支持的地方
好了,先简单的按照官方网址的demo实践一发:
先在MySQL中建2个库
分别在这2个库中运行:
[sql] view plain copy
- CREATE TABLE IF NOT EXISTS `t_order_0` (
- `order_id` INT NOT NULL,
- `user_id` INT NOT NULL,
- PRIMARY KEY (`order_id`)
- );
- CREATE TABLE IF NOT EXISTS `t_order_item_0` (
- `item_id` INT NOT NULL,
- `order_id` INT NOT NULL,
- `user_id` INT NOT NULL,
- PRIMARY KEY (`item_id`)
- );
- CREATE TABLE IF NOT EXISTS `t_order_1` (
- `order_id` INT NOT NULL,
- `user_id` INT NOT NULL,
- PRIMARY KEY (`order_id`)
- );
- CREATE TABLE IF NOT EXISTS `t_order_item_1` (
- `item_id` INT NOT NULL,
- `order_id` INT NOT NULL,
- `user_id` INT NOT NULL,
- PRIMARY KEY (`item_id`)
- );
新建maven项目
Maven依赖的pom.xml
[html] view plain copy
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.study</groupId>
- <artifactId>sharding-jdbc</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>sharding-jdbc</name>
- <url>http://maven.apache.org</url>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <spring.version>3.2.5.RELEASE</spring.version>
- <mybatis.version>3.2.4</mybatis.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.10</version>
- </dependency>
- <dependency>
- <groupId>com.dangdang</groupId>
- <artifactId>sharding-jdbc-core</artifactId>
- <version>1.0.0</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId分库分表-- Sharding-Jdbc基本原理