sharding-jdbc

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了sharding-jdbc脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1.分库分表的问题

  在系统设计阶段,就要完成垂直分库和垂直分表. 在数据量不断上升,数据库性能无法满足需求的时候, 首先要考虑的是缓存、 读写分离、索引技方案.如果数据量不断增加,并且持续增长再考虑水平分库和水平分表

    @H_126_31@事务一致性问题:分库之后 一个请求可能要访问多个数据库,如何保证事务的一致性
  • 跨节点关联问题:在代码层面进行控制,将关联查询拆分执行后合并结果
  • 分页查询排序问题:将多个库中的数据查出来,根据排序字段再在内存中排序
  • 主键避重问题:表中的数据存储在不同的数据库, 主键自增无法保证ID不重复, 需要单独设计全局主键
  • 公共表问题:不同的数据库,都需要从公共表中获取数据. 可以在每一个库都创建这个公共表, 所有对公共表的更新操作,都同时发送到所有分库执行

2.ShardingJDBC

ShardingSphere是一套开的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBCSharding-ProxySharding-sidecar计划中)这3款相互独立的产品组成

shardingJDBC:适用于任何基于JavaORM框架,如:JPA, Hibernate, Mybatis, SPRing JDBC Template或直接使用JDBC;基于任何第三方的数据库连接池,如:DBCP, C3P0, Druid等;支持任意实现JDBC规范的数据库。目前支持MySQLoracleSQLServerPostgreSQL

使用Sharding-Jdbc前需要人工对数据库进行分库分表,在应用程序中加入Sharding-JdbcJar包,应用程序通过Sharding-Jdbc操作分库分表后的数据库和数据表,由于Sharding-Jdbc是对Jdbc驱动的增强,使用Sharding-Jdbc就像使用Jdbc驱动一样,在应用程序中是无需指定具体要操作的分库和分表的

  • mycat和ShardingJDBC的区别
    • mycat是一个中间件的第三方应用,sharding-jdbc是一个jar
    • 使用mycat时不需要修改代码,而使用sharding-jdbc时需要修改代码
    • Mycat 是基于 Proxy,它复写了 MySQL 协议,将 Mycat Server 伪装成一个 MySQL 数据库,Sharding-JDBC 是基于 JDBC 的扩展,是以 jar 包的形式提供轻量级服务的
  • sharding JDBC入门
    • 创建数据库lg_order, 模拟将订单表进行水平拆分, 创建两张表pay_order_1 pay_order_2,这两张表是订单表拆分后的表,我们通过Sharding-Jdbc向订单表插入数据,按照一定的分片规则,主键为偶数的落入pay_order_1表 ,为奇数的落入pay_order_2, 再通过Sharding-Jdbc 进行查询
    • 创建数据库
    CREATE DATABASE lg_order CHARACTER SET 'utf8';
    DROP TABLE IF EXISTS pay_order_1;
    CREATE TABLE pay_order_1 (
    order_id BigINT(20) Primary KEY AUTO_INCREMENT ,
    user_id INT(11) ,
    product_name VArchAR(128),
    COUNT INT(11)
    );
    DROP TABLE IF EXISTS pay_order_2;
    CREATE TABLE pay_order_2 (
    order_id BIginT(20) PRIMARY KEY AUTO_INCREMENT ,
    user_id INT(11) ,
    product_name VARCHAR(128),
    COUNT INT(11)
    );
    • 创建SpringBoot项目引入maven依赖
    • 分片规则配置(水平分表)
    • 编写程序

3.ShardingJDBC 分库分表

4.ShardingJDBC 操作公共表

 

 

Mycat 是基于 Proxy,它复写了 MySQL 协议,将 Mycat Server 伪装成一个 MySQL 数据库,而Sharding-JDBC 是基于 JDBC 的扩展,是以 jar 包的形式提供轻量级服务的

脚本宝典总结

以上是脚本宝典为你收集整理的sharding-jdbc全部内容,希望文章能够帮你解决sharding-jdbc所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。