数据库系列课程(07)-Sharding-Jdbc简介

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 数据库系列课程(07)-Sharding-Jdbc简介

1. Sharding-Jdbc介绍

Sharding-Jdbc在3.0后改名为Shardingsphere,它由Sharding-JDBCSharding-ProxySharding-Sidecar(计划中)这3款相互独立的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。

Sharding-Sphere(音标: [sfɪə(r)])定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。它通过关注不变,进而抓住事物本质。

关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。

应用场景:

  • 数据库读写分离
  • 数据库分表分库

相关资料:

2. Sharding-Jdbc与MyCat区别

SJdbc与MyCat的区别如下:

  • MyCat是一个基于第三方应用中间件数据库代理框架,客户端所有的jdbc请求都必须要先交给MyCat,再有MyCat转发到具体的真实服务器中。
  • Sharding-Jdbc是一个Jar形式,在本地应用层重写Jdbc原生的方法,实现数据库分片形式。
  • MyCat属于服务器端数据库中间件,而Sharding-Jdbc是一个本地数据库中间件框架。

从设计理念上看确实有一定的相似性:

  • 主要流程都是SQL 解析 => SQL 路由 => SQL 改写 => SQL 执行 => 结果归并。
  • 但架构设计上是不同的:Mycat 是基于 Proxy,它复写了 MySQL 协议,将 Mycat Server 伪装成一个 MySQL 数据库,而 Sharding-JDBC 是基于 JDBC 的扩展,是以 jar 包的形式提供轻量级服务的(类似于SpringCloud Ribbon与Nginx区别)。

3. Sharding-Jdbc实现读写分离

Sharding-Jdbc实现读写分离原理,非常容易,只需要在项目中集成主和从的数据源,Sharding-Jdbc自动根据DML和DQL 语句类型连接主或者从数据源

注意: Sharding-Jdbc只是实现连接主或者从数据源,不会实现主从复制功能,需要自己配置数据库自带主从复制方式。

实际开发场景中,配置内容如下:

server:
  port: 9002
mybatis-plus:
#  mapper-locations: classpath*:/mapper/*.xml
  global-config:
    db-config:
      column-underline: true
#shardingjdbc配置      
sharding:
  jdbc:
    data-sources:
     ###配置第一个从数据库
      ds_slave_0:
        password: root
        jdbc-url: jdbc:mysql://192.168.212.203:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true
        driver-class-name: com.mysql.jdbc.Driver
        username: root
      ###主数据库配置  
      ds_master:
        password: root
        jdbc-url: jdbc:mysql://192.168.212.202:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true
        driver-class-name: com.mysql.jdbc.Driver
        username: root
    ###配置读写分离    
    master-slave-rule:
    ###配置从库选择策略,提供轮询与随机,这里选择用轮询
      load-balance-algorithm-type: round_robin
      ####指定从数据库
      slave-data-source-names: ds_slave_0
      name: ds_ms
      ####指定主数据库
      master-data-source-name: ds_master


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7天前
|
SQL Java 数据库连接
Java开发者必知:JDBC连接数据库的“三大法宝”
【6月更文挑战第24天】Java JDBC的三大法宝简化数据库操作:①统一API接口,跨平台与各类数据库交互;②参数化查询,提升效率,防止SQL注入;③事务管理,确保数据一致性。通过这三个核心特性,开发者能更安全高效地处理数据库任务。示例代码展示了如何使用这些功能。
|
7天前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
25 3
|
7天前
|
Java 数据库连接 API
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
14 3
|
7天前
|
SQL 安全 Java
JDBC:Java与数据库的“月老红线”,你真的了解它吗?
【6月更文挑战第24天】JDBC是Java与数据库间的桥梁,简化了数据库交互。通过`DriverManager.getConnection()`建立连接,`PreparedStatement`执行SQL并设置参数,确保安全高效,`ResultSet`处理查询结果。这段代码展示了JDBC如何连接MySQL数据库,执行查询并打印结果,揭示了其作为“月老”的角色,使得数据操作变得简单。
|
7天前
|
SQL Java 数据库连接
惊!Java界的“金钥匙”:揭秘JDBC如何轻松开启数据库大门!
【6月更文挑战第24天】JDBC是Java连接数据库的关键,简化了数据操作。在Java项目中添加MySQL驱动后,通过`DriverManager.getConnection()`建立连接。示例代码展示了如何执行查询、处理`ResultSet`。JDBC提供了一致的接口,让开发者能轻松进行数据库交互,无论是新手还是专家,都能快速掌握,开启数据库开发之旅。
|
7天前
|
Java 关系型数据库 数据库连接
JDBC:Java与数据库的“黄金搭档”,为何它如此重要?
【6月更文挑战第24天】Java的JDBC是数据库连接的桥梁,统一API简化了与MySQL等各类数据库的交互,降低复杂性并提高效率。在库存系统示例中,JDBC允许无缝查询和更新,无需关注底层实现。作为“黄金搭档”,JDBC还支持事务、批处理等功能,确保性能和安全性,是Java开发者不可或缺的工具。
|
7天前
|
SQL Java 数据库连接
JDBC之旅:从陌生到熟悉的Java数据库连接之路
【6月更文挑战第24天】学习JDBC之旅,从新手到熟手的蜕变。通过`DriverManager.getConnection()`建立数据库连接,用`PreparedStatement`防止SQL注入。深入学习后,掌握事务管理、批处理等高级功能,应对连接异常和性能优化挑战,逐渐精通JDBC,体验编程乐趣与成长。JDBC成为开发者不可或缺的工具,开启数据库世界的大门。
|
10天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的数据库课程在线教学的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的数据库课程在线教学的详细设计和实现(源码+lw+部署文档+讲解等)
23 2
|
3天前
|
SQL Java 数据库连接
使用Python通过JDBC操作数据库(达梦数据库)
使用Python通过JDBC操作数据库(达梦数据库)
13 0
|
4天前
|
SQL Java 数据库连接
老程序员分享:JDBC工具类封装、封装DAO方法与数据库表实体类封装的使用案列详情
老程序员分享:JDBC工具类封装、封装DAO方法与数据库表实体类封装的使用案列详情