springboot - sharding-jdbc 实现分库分表

1)使用场景
对于Mysql主从复制实现读写分离来讲,能够解决读的扩展性问题。可是写的话,面对庞大的数据量仍是集中在Master上,而且Master挂载的slave不可能无限制多,由于slave依赖于Master的能力和负载的限制。所以须要对Master进行扩展来实现海量数据的须要。sql

2)分表
对于访问极为频繁,数据量又极大的表来讲,最直接作的就是减小数据量的总条数,以便减小数据查询所须要的时间,能够对大数据表进行分表。
分表策略:用id来进行分表是最为常见的策略,由于大部分查询都要带上id,又不影响查询又能使得数据均衡的分布在各个表中。假设有一个订单表有1000w条数据,将该表分红16个表,将id%16进行存储,若是id不是数字能够先hash取值。拆分的记录根据取余的值进行存储,App应用根据取余的值进行表的访问。数据库

3)分库
分表能解决数据量过大形成的查询效率低下的问题,可是没法有效提示数据的并发访问能力。将数据库拆分,提升数据库的写入能力就是所谓的分库。
与分表相似,分库策略能够经过对某一个字段如id进行取余操做,来对数据访问进行路由。如id=19,分红3个库,19%3=1,这时候就路由到第一个库。并发

4)sharding-jdbc 实现分库分表大数据

sharding-jdbc 最早是当当网开源代码,后来被Apache集成。
sharding-jdbc能帮咱们实现什么:
1,保证事务一致性(跨库)
2,支持分页查询(跨库)
3,只要重配数据源,其余代码不须要改动ui

 

pom.xml 模块,引入jar spa

 1 <dependency>
 2    <groupId>io.shardingjdbc</groupId>
 3    <artifactId>sharding-jdbc-core</artifactId>
 4    <version>2.0.3</version>
 5 </dependency>
 6 <dependency>
 7    <groupId>com.alibaba</groupId>
 8    <artifactId>druid</artifactId>
 9    <version>1.1.3</version>
10 </dependency>
11 <dependency>
12    <groupId>commons-dbcp</groupId>
13    <artifactId>commons-dbcp</artifactId>
14    <version>1.4</version>
15 </dependency>

 

demo连接:
连接:https://pan.baidu.com/s/1DPArC6hz3PmnSmSKc9KhmQ
提取码:ads6 code

相关文章
相关标签/搜索