分布式数据库中间件Sharding-JDBC介绍

分库分表之Sharding-JDBC 目录 1、Sharding-JDBC概述 2、架构回顾 3、SpringBoot集成Sharding-JDBC 3.1 准备工作 3.2 配置MySQL主从复制 3.3 引入依赖坐标 3.4 application.properties配置 3.5 启动类,pojo service,dao,test 3.6 一些需要补充的概念 4、Sharding-JDBC原理 5、分库分表带来的问题 5.1 垂直分库带来的问题和解决思路 5.2 水平分库带来的问题和解决思路 5.3 我们. 阅读详情

前文中介绍了分布式数据库中间件Mycat的一些特性,作为对比本文简要介绍Sharding-JDBC的一些特性以及分片的实现原理,进行对比分析以了解。


1、ShardingSphere介绍

ShardingSphere是一套开源的分布式数据库中间件解决方案,目前由Sharding-JDBC和Sharding-Proxy两款独立的产品组成,2020年4⽉16⽇正式成为 Apache 软件基⾦会的顶级项⽬。

  • Sharding-JDBC:定位为轻量级Java框架,在Java的JDBC层提供的额外服务,支持任意实现JDBC规范的数据库。
  • Sharding-Proxy:定位为透明化的数据库代理端,通过实现数据库二进制协议,对异构语言提供支持。目前提供MySQL和PostgreSQL协议。

ShardingSphere利用分布式场景下关系型数据库的计算和存储能力,提供标准化的数据分片、分布式事务和数据库治理功能,可以将任意数据库转换为分布式数据库,适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。

1.1 设计理念

ShardingSphere采用Database Plus的设计理念,致力于构建数据库上层的标准和生态,利用连接、增强和可插拔的方式在生态中补充数据库所缺失的能力。

Database Plus:一种分布式数据库系统的设计理念。旨在碎片化的异构数据库上层构建生态,在最大限度的复用数据库原生存算能力的前提下,进一步提供面向全局的扩展和叠加计算能力(例如:数据分片、数据加密等)。使应用和数据库间的交互面向Database Plus构建的标准,从而屏蔽数据库碎片化对上层业务带来的差异化影响。

在这里插入图片描述

1)连接:打造数据库上层标准

通过对数据库协议、SQL方言以及数据库存储的灵活适配,快速构建多模异构数据库上层的标准,同时通过内置DistSQL为应用提供标准化的连接方式。

2)增强:数据库计算增强引擎

在原生数据库基础能力之上,提供分布式及流量增强方面的能力。前者可突破底层数据库在计算与存储上的瓶颈,后者通过对流量的变形、重定向、治理、鉴权及分析能力提供更为丰富的数据应用增强能力。

3)可插拔:构建数据库功能生态

ShardingSphere的可插拔架构划分为3层,它们是:L1内核层、L2功能层、L3生态层

  • L1内核层:是数据库基本能力的抽象,其所有组件均必须存在,但具体实现方式可通过可插拔的方式更换。主要包括查询优化器、分布式事务引擎、分布式执行引擎、权限引擎和调度引擎等。
  • L2功能层:用于提供增量能力,其所有组件均是可选的,可以包含零至多个组件。组件之间完全隔离,互无感知,多组件可通过叠加的方式相互配合使用。主要包括数据分片、读写分离、数据库高可用、数据加密、影子库等。 用户自定义功能可完全面向Apache ShardingSphere定义的顶层接口进行定制化扩展,而无需改动内核代码。
  • L3生态层:用于对接和融入现有数据库生态,包括数据库协议、SQL解析器和存储适配器,分别对应于Apache ShardingSphere以数据库协议提供服务的方式、SQL方言操作数据的方式以及对接存储节点的数据库类型。
1.2 产品规划

随着版本的不断迭代,ShardingSphere的功能也变得多元化起来:从最开始Sharding-JDBC 1.0版本只有数据分片,到2.0版本开始支持数据库治理,再到3.0版本Sharding-Proxy上线并支持分布式事务,再到4.0进入Apache基金会,再到如今5.0版本的可插拔式设计。其宗旨是构建数据库上层的标准和生态,建立统一标准和规范,完善数据库能力。

在这里插入图片描述

1.3 Sharding-JDBC

接下来重点介绍Sharding-JDBC框架,Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。

  • 适用于任何基于JDBC的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC;
  • 支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, HikariCP等;
  • 支持任意实现JDBC规范的数据库,目前支持MySQL,PostgreSQL,Oracle,SQLServer以及任何可使用JDBC访问的数据库。

在这里插入图片描述

1.3.1 Sharding-JDBC主要功能

Sharding-JDBC主要支持数据分片、分布式事务和数据库治理功能。

在这里插入图片描述

  1. 数据分片
    1. 分库分表:将数据分片进行垂直拆分和水平拆分
    2. 读写分离:根据SQL语义的分析,将读操作和写操作分别路由至主库与从库
    3. 分片策略:基于分片键和不同的分片算法实现分片
    4. 分布式主键:内置的分布式主键生成器,例如UUID、SNOWFLAKE
  2. 分布式事务
    1. 标准化的事务接口:begin/commit/rollback接口实现
    2. XA强一致性事务:AP、TM和RM模型保证分布式事务一致性
    3. 柔性事务:BASE事务模型实现事务的最终一致性
  3. 数据库治理
    1. 数据库网关:SQL方言自动翻译功能,将不同类型的数据库方言自动翻译为后端数据库所使用的方言
    2. 流量治理:计算节点的过载保护和数据节点限流
    3. 数据加密:数据加密功能,实现数据的合规化改造治理
    4. 可视化链路跟踪:多种监控性能和监控指标,实现监控仪表盘和应用链路跟踪
1.3.2 Sharding-JDBC处理流程

Sharding-JDBC定位为Java框架,对于开发人员只需要使用调用JDBC API访问数据库,只要正确使用DataSource、Connection、Statement 、ResultSet 等API接口,直接操作数据库即可,实现“创建DataSource->获取Connection->构建Statement->执行SQL语句->处理ResultSet”完整的流程。Sharding-JDBC就是将原来的DataSource、Connection等接口扩展成 ShardingDataSource、ShardingConnection,对外暴露的JDBC操作接口与JDBC规范中的接口完全一致。因此,Sharding-JDBC适用于任何基于JDBC的ORM框架,并完美兼容任何第三方的数据库连接池。

在这里插入图片描述

2、Sharding-JDBC核心原理
2.1 分片概念

数据分片通常将原本一张数据量很大的表根据分片规则和分片键拆分为表结构完全一样的小数据量的表,如下图所示,每张表只存储大表中的一部分数据。当SQL执行时会通过不同的分片策略,访问不同的库和分片中的数据。
在这里插入图片描述

2.1.1 表概念
  1. 逻辑表:相同结构的水平拆分数据库(表)的逻辑名称,是SQL中表的逻辑标识。比如图中的t_prod,拆分后数据库中已经不存在这张表,取而代之的是t_prod_n这些表,t_prod就称为这些拆分表的逻辑表。
  2. 真实表:数据库中真实存在的物理表,比如图中的t_prod_0…t_prod_3
  3. 数据节点:分库分表后不可再分割的最小的数据单元,由数据源名称和数据表组成,比如t_prod_db_1.t_prod_0就表示一个数据节点
  4. 绑定表:指代分片规则一致的一组分片表,比如t_prod和t_order均按照分片键id进行分片,则t_prod和t_order为绑定表。使用绑定表进行多表关联查询时,必须使用分片键进行关联,否则会出现笛卡尔积关联或跨库关联,从而影响查询效率。
  5. 广播表:指所有的分片数据源中都存在的表,表结构及其数据在每个数据库中均完全一致。适用于数据量不大且需要与海量数据的表进行关联查询的场景,如字典表、参数表。
  6. 单表:指所有的分片数据源中仅唯一存在的表。适用于数据量不大且无需分片的表。
2.1.2 分片算法

Sharding-JDBC对分片键基于一定的分片规则实现数据分片,从执行SQL的角度来看分片算法理解为一种路由机制。Sharding-JDBC支持以下内置的分片算法:

  1. 精确分片算法(PreciseShardingAlgorithm):用于单个字段作为分片键,SQL中有“=”和“IN”等条件的分片,需要在标准分片策略(StandardShardingStrategy)下使用。
  2. 范围分片算法(RangeShardingAlgorithm):范围分片算法用于单个字段作为分片键,SQL 中有“BETWEEN AND、>、<、>=、<=”下使用。
  3. 复合分片算法(ComplexKeysShardingAlgorithm):用于多个字段作为分片键的分片操作,同时获取到多个分片健的值,根据多个字段处理业务逻辑。需要在复合分片策略(ComplexShardingStrategy)下使用。
  4. Hint分片算法(HintShardingAlgorithm):上边的算法中我们都是解析语句提取分片键,并设置分片策略进行分片。但有些时候我们并没有使用任何的分片键和分片策略,可还想将SQL路由到目标数据库和表,就需要通过手动干预指定SQL的目标数据库和表信息,这也叫强制路由。
2.1.3 分片策略

分片策略是一个抽象的概念,实际的分片操作是由分片键+分片算法实现的。

  1. 标准分片策略:适用于单分片键,此策略支持PreciseShardingAlgorithm和RangeShardingAlgorithm 两个分片算法。
  2. 复合分片策略:支持多分片键,同样支持对SQL语句中的“=、>、<、>=、<=、IN、BETWEEN AND”的分片操作。
  3. 行表达式分片策略:支持对 SQL语句中的“=、IN”的分片操作,但只支持单分片键。这种策略通常用于简单的分片,不需要自定义分片算法,可以直接在配置文件中写规则。
  4. Hint分片策略:对应Hint分片算法,通过指定分片健而非从 SQL中提取分片健的方式进行分片的策略。
2.2 数据分片原理

Sharding-JDBC数据分片的原理如图所示,分为“SQL解析->执⾏器优化->SQL路由->SQL改写->SQL执⾏->结果归并”过程。

在这里插入图片描述

2.2.1 SQL解析

SQL解析分为词法解析和语法解析。先通过词法解析器将SQL拆分为一个个不可再分的单词,再使用语法解析器对SQL进行理解,并最终提炼出解析上下文。解析上下文包括表、选择项、排序项、分组项、聚合函数、分页信息、查询条件以及可能需要修改的占位符的标记。

SELECT id, name FROM t_user WHERE status = 'ACTIVE' AND age > 18

以上SQL语句,解析之后抽象的语法树如下:

在这里插入图片描述

通过对抽象语法树遍历,提炼出分片所需的上下文,上下文包含查询字段信息(Field)、表信息(Table)、查询条件(Condition)、排序信息(Order By)、分组信息(Group By)以及分页信息(Limit)等,并标记出 SQL中有可能需要改写的位置。

2.2.2 执行器优化

由Federation执行引擎(开发中)提供支持,对关联查询、子查询等复杂查询进行优化,同时支持跨多个数据库实例的分布式查询,内部使用关系代数优化查询计划,通过最优计划查询出结果。

2.2.3 SQL路由

SQL路由根据解析上下文匹配数据库和表的分片策略,并生成路由路径。对于携带分片键的SQL,根据分片键的不同可以划分为单片路由(分片键的操作符是等号)、多片路由(分片键的操作符是IN)和范围路由(分片键的操作符是BETWEEN)。简单点理解就是可以根据配置的分片策略计算出SQ该在哪个库的哪个表中执行,而SQL路由又根据有无分片健区分出分片路由和广播路由。

在这里插入图片描述

1)分片路由
用于根据分片键进行路由的场景,又细分为直接路由、标准路由和笛卡尔积路由这3种类型。

  • 直接路由:满足直接路由的条件相对苛刻,它需要通过Hint(使用HintAPI直接指定路由至库表)方式分片,并且是只分库不分表的前提下,则可以避免SQL解析和之后的结果归并。
  • 标准路由:当分片运算符是等于号时,路由结果将落入单库(表);当分片运算符是BETWEEN或IN时,则路由结果不一定落入唯一的库(表),因此一条逻辑SQL最终可能被拆分为多条用于执行的真实SQL。
  • 笛卡尔积路由:它无法根据绑定表的关系定位分片规则,因此非绑定表之间的关联查询需要拆解为笛卡尔积组合执行。

2)广播路由:对于不携带分片键的SQL,则采取广播路由的方式。根据SQL类型又可以划分为全库表路由、全库路由、全实例路由、单播路由和阻断路由这5种类型。

  • 全库表路由:全库表路由用于处理对数据库中与其逻辑表相关的所有真实表的操作,主要包括不带分片键的DQL和DML以及DDL等
  • 全库路由:全库路由用于处理对数据库的操作,包括用于库设置的SET类型的数据库管理命令,以及TCL这样的事务控制语句。
  • 全实例路由:全实例路由用于DCL操作,授权语句针对的是数据库的实例。
  • 单播路由:单播路由用于获取某一真实表信息的场景,它仅需要从任意库中的任意真实表中获取数据即可。
  • 阻断路由:阻断路由用于屏蔽 SQL 对数据库的操作,比如use database
2.2.4 SQL改写

SQL改写是将SQL改写为在真实数据库中可以正确执行的语句。SQL改写分为正确性改写和优化改写。

  • 正确性改写:在包含分表的场景中,需要将分表配置中的逻辑表名称改写为路由之后所获取的真实表名称。另外还包括包括补列和分页信息修正等内容。
  • 优化改写:在不影响查询正确性的情况下,对性能进行提升的有效手段。分为单节点优化和流式归并优化

在这里插入图片描述

2.2.5 SQL执行

SQL执行引擎采用一套自动化的执行引擎,负责将路由和改写完成之后的真实SQL安全且高效发送到底层数据源执行。

在这里插入图片描述

SQL执行引擎分为准备阶段和执行阶段:

1)准备阶段

准备阶段用于准备执行的数据,分为结果集分组和执行单元创建两个步骤。

  • 结果集分组:将SQL的路由结果按照数据源的名称进行分组
  • 通过上一步骤获得的路由分组结果创建执行的单元

2)执行阶段

执行阶段用于真正的执行SQL,它分为分组执行和归并结果集生成两个步骤

  • 分组执行将准备执行阶段生成的执行单元分组下发至底层并发执行引擎,并针对执行过程中的每个关键步骤发送事件。
  • 归并结果集生成通过在执行准备阶段的获取的连接模式,生成内存归并结果集或流式归并结果集,并将其传递至结果归并引擎,以进行下一步的工作
2.2.6 SQL结果归并

SQL结果归并是将多个执行结果集归并以便于通过统一的JDBC接口输出。结果归并从功能上分为遍历、排序、分组、分页和聚合5种类型;从结构划分,可分为流式归并、内存归并和装饰者归并。

  • 遍历归并:将多个数据结果集合并为一个单向链表,在遍历完成链表中当前数据结果集之后,将链表元素后移一位,继续遍历下一个数据结果集即可
  • 排序归并:每个数据结果集自身是有序的,因此只需要将数据结果集当前游标指向的数据值进行排序即可,不需要对所有的结果集进行全量的排序,节省了内存的消耗
  • 分组归并:分为流式分组归并和内存分组归并, 流式分组归并要求SQL的排序项与分组项的字段以及排序类型(ASC或DESC)必须保持一致。如果不一致,需要将所有的结果集数据加载至内存中进行分组和聚合。
  • 聚合归并:使用聚合函数进行比较、累加和求平均值
  • 分页归并:通过装饰者模式来增加对数据结果集进行分页的能力,将无需获取的数据过滤掉。

在这里插入图片描述

3、Sharding-JDBC和Mycat对比

Mycat和ShardingSphere(Sharding-JDBC)都是非常流行的开源分布式数据库中间件,各自具有一些独特的功能,也有很多企业成功应用的案例。二者之间的特性对比如下表所示:

特性MycatSharding-JDBC
开发语言JavaJava
开源协议GPL-2.0/GPL-3.0Apache-2.0
数据库多种多种
连接数低高
应用语言任意Java
代码入侵无需修改代码
性能损耗略高损耗低
无中心化无是
管理控制台Mycat-webShardingUI
分库分表单库多表/多库单表支持
多租户方案支持无
读写分离支持支持
分片策略定制化支持支持
分布式主键支持支持
标准化事务接口支持支持
XA强一致性事务支持支持
柔性事务无支持
配置动态化开发中支持
编排治理开发中支持
数据脱敏无支持
可视化链路跟踪无支持
多节点操作支持支持
跨库关联跨库2表JOIN无
IP白名单支持无
SQL黑名单支持无
存储过程支持无

Mycat是一个分布式数据库中间件,对前端来说相当于一个数据库代理。ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。目前来看接入Apache基金会的ShardingSphere体系更加完善,社区更加活跃。


参考资料:

  1. 官网,https://shardingsphere.apache.org/document/current/cn/overview/
  2. https://blog.youkuaiyun.com/agonie201218/article/details/125164699
  3. https://blog.youkuaiyun.com/horses/article/details/106086208
  4. 分布式数据库中间件Mycat介绍
详解Sharding-JDBC的概念 核心概念 分片 一般我们在提到分库分表的时候,大多是以水平切分模式(水平分库、分表)为基础来说的,数据分片将原本一张数据量较大的表 t_order 拆分生成数个表结构完全一致的小数据量表 t_order_0、t_order_1、···、t_order_n,每张表只存储原大表中的一部分数据,当执行一条SQL时会通过 分库策略、分片策略 将数据分散到不同的数据库、表内。 数据节点 数据节点是分库分表中一个不可再分的最小数据单元(表),它由数据源名称和数据表组成,例如上图中 order_db_1.t_order 阅读详情

相关推荐

关于Sharding-JDBC和Sharding-Sphere前世今生

2014年,当当架构部沈理、张亮、邓学祥、董四辈、池田、吴翊以及年底来的曹昊针对互联网主流技术架构进行调研,包含了SOA服务框架、定时任务管理、消息队列、数据库中间件。 2015年,自研分布式定时任务框架elastic-job开源发布后,下一阶段的目标转移到数据库中间件上。开发SmartClient方式的轻量级组件,实现标准的JDBC,这样迁移成本低,架构简洁可控,在数据库领域有深入钻研的高洪涛...

逸轩小Q的博客 3962

Sharding-JDBC

数据库优化的几个阶段 数据库优化的几个阶段请参考: https://www.songma.com/news/txtlist_i21939v.html 分库分表适用场景 分库分表主要用于应对当前互联网常见的两个场景——大数据量和高并发。 1.数据量大时,减少单表查询压力 2.减少单表的访问压力 3.单表数据量上百万至千万,索引性能下降 4.索引也很难在提高性能或者更新、插入数据频繁等。 Shardi...

sinat_34814635的博客 3万+

ShardingSphere--第一部分:简介介绍

Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈。Apache ShardingSphere 由 JDBC、Proxy 和 Sidecar(规划中)这 3 款相互独立,却又能够混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。

LC的博客 1011

ShardingJDBC

定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。适用于任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或直接使用 JDBC;支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, HikariCP 等;支持任意实现 JDBC 规范的

worn_xiao的博客 1万+

从IPv6到Tomcat:彻底解决127.0.0.1拒绝连接的完整指南

本文提供了从IPv6到Tomcat的全面指南,帮助开发者彻底解决127.0.0.1拒绝连接的问题。涵盖网络协议栈、服务配置、端口管理等多个层面的排查方法,特别针对Tomcat服务提供了专项解决方案,确保开发者能够快速定位并修复连接问题。

weixin_29207439的博客 471

机械臂电机力矩计算

设计 6 轴机械臂时,电机力矩计算是确保机械臂负载能力、运动精度和安全性的核心环节,需围绕和两大核心展开,结合机械臂结构参数(如关节长度、质量分布)、负载需求(如末端负载重量、惯性)和运动参数(如加速度、角速度)逐步推导。

ZPC8210的博客 1856

sharding-jdbc(ShardingSphere )、mycat、DRDS 三个分布式数据库中间件的简单介绍(纯理论说明)

sharding-jdbc、mycat、DRDS 三个分布式数据库中间件的简单介绍 前言 一般对于业务记录类随时间会不断增加的数据,当数据量增加到一定量(一般认为整型值为主的表达到千万级,字符串为主的表达到五百万)的时候,性能将遇到瓶颈,同时调整表结构也会变得非常困难。为了避免生产遇到这样的问题,在做系统设计时需要预估可能产生的数据量:预估记录主体个数预估记录主体产生的记录数(e.g.用户订单表预...

猎人在吃肉 8780

稚晖君Dummy机械臂CAN总线控制详解:从代码到实战(附常见问题排查)

本文深入解析了稚晖君Dummy机械臂的CAN总线控制技术,从协议设计到代码实现,详细介绍了CAN总线在机械臂控制中的核心价值、通信协议栈设计、运动控制指令实现及常见问题排查方法。通过实战案例和代码示例,帮助开发者快速掌握机械臂CAN总线控制的关键技术。

uuu88的博客 293

分布式数据库中间件-Sharding-JDBC

Sharding-JDBC是当当网研发的开源分布式数据库中间件,定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架,从3.0开始Sharding-JDBC被包含在Sharding-Sphere中。ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidec

是程序喵呀 7279

DirectX修复工具使用技巧之二——手动修复C++创建失败的文件

最后更新:2021-2-25 随着V4.0正式版的发布,近来有部分用户来咨询如何解决C++文件创建失败的问题。在此我将以解决最常见的C++2015-2019文件创建失败为例,向大家演示一下在线修复的方法,其他C++或文件的方法大同小异。此次操作以Windows 7为例,其他系统相应参考即可。 首先,如果希望程序能手动在线修复创建失败的失败,请首先确定您使用的V4.0.2版或更高版本,老版本不支持此功能。查看程序版本的方式可以把鼠标放在DirectX Repair.e...

VBcom的专栏 6万+

vTaskStartScheduler()详解

是启动 FreeRTOS 实时内核的“扳机”。在调用它之前,你只是创建了一些任务结构,但它们都处于“待命”状态,系统仍然在按传统的裸机前后台方式运行。调用这个函数后,FreeRTOS 内核会接管系统的控制权,开始根据优先级调度你创建的任务,多任务环境才真正开始。关键点:它没有参数。它的所有行为都由中的配置宏控制。它通常不会返回。一旦调用,除非没有任务可以运行(或者你显式地停止了调度器),否则程序流永远不会回到main()函数中调用它的下一行。是一个没有参数但行为由精密控制的函数。

Shylock_Mister的博客 1591

阿里Mycat 和京东ShardingSphere:分布式数据库中间件哪家强?

比较两个非常流行的开源分布式数据库中间件:Mycat 和 ShardingSphere(包括 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar 3 款产品)。另外还有一个增强版的Mycat:DBLE(专注于 MySQL) 。

Tony.Dong的专栏 2万+

蓝牙学习笔记之SMP协议(十四)

目录 写在前面 SM规范简述 安全管理器 加密工具 配对流程 安全属性 IO功能 加密密钥大小 配对算法 低功耗蓝牙安全 密钥和值的定义 分发密钥的生成 密钥分配 安全管理器会话协议 介绍 ​​​​​​​命令格式 写在前面 安全规范协议,主要是描述LE控制器设备配对、认证、加密等过程进行规定,同时也对相关算法进行了说明。 低功耗蓝牙的安全管理经历了几个阶段,L...

在云巅的博客 3660

Sharding JDBC 快速入门及简单使用(分片算法、SPI机制、执行流程)

1. Sharding-Sphere Sharding-JDBC 最早是当当网内部使用的一款分库分表框架,到2017年的时候才开始对外开源,这几年在大量社区贡献者的不断迭代下,功能也逐渐完善,现已更名为 ShardingSphere ,2020年4⽉16⽇正式成为 Apache 软件基⾦会的顶级项⽬。 随着版本的不断更迭 ShardingSphere 的核心功能也变得多元化起来。如下图,ShardingSphere生态包含三款开源分布式数据库中间件解决方案,Sharding-JDBC、Sharding-Pr

Java是世界上最好的语言 4304

【AI Agent系列】【MetaGPT】9. 一句话订阅专属信息 - 订阅智能体进阶,实现一个更通用的订阅智能体(2)

订阅智能体进阶(2)。不用爬虫,直接提取网页信息。从RunSubscription分离出AddSubscriptionTask的action,并且让SubscriptionRunner单独运行。

同学小张的博客 1586

【ComfyUI报错解决】K采样器 mat1和mat2形状不匹配错误分析与修复 mat1 and mat2 shapes cannot be multiplied (77x2048 and 4096x

如果你在 ComfyUI 里遇到K采样器报错:mat1 和 mat2 shapes cannot be multiplied确认大模型和 LoRA 是否是同一版本(SDXL vs SD1.5,不能混用)。如果用了双 CLIP 加载器,要确认加载的类型和选择的模型类型是否匹配。加载→ 类型选flux加载 SDXL 专用的 clip/t5 → 类型选sdxl避免不同版本模型和 LoRA 混搭,保持一致性。模型+LoRA+CLIP 类型必须保持同一版本,不然就会报错。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2407

【分表分库】SpringBoot整合ShardingSphere---Sharding-JDBC

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。

Small ink的博客 2411

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Sharding-JDBC--介绍

本文介绍Sharding-JDBC。

IT利刃出鞘的博客 682

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数据库数据量大了怎么办? 当然是分库分表,Sharding-JDBC了解一下?

Sharding-JDBC是一款基于JDBC规范的分布式数据库中间件,可以帮助Java应用轻松实现水平分库分表、读写分离等分布式数据库功能,并提供了方便易用、高可用、高性能的数据访问解决方案。

兴趣是最好的老师,勤能补拙 1891

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

apache是中间件_一文看懂分布式数据库中间件—sharding-sphere的前世今生

概述当我们的业务发展到一定程度,分库分表是一种必然的要求,分库可以实现资源隔离,分表则可以降低单表数据量,提高访问效率。分库分表的技术方案,一般有两种理念:集中式的Proxy,实现MySQL客户端协议,使用户无感知分布式的Proxy,在代码层面进行增强,实现一个路由程序这两种方式是各有利弊的,集中式Proxy的好处是业务没有感知,一切交给DBA把控,分布式的Proxy其支持的语言有限,例如Shar...

weixin_39820588的博客 200

二、Sharding-JDBC 快速入门(只水平分表)

1、Sharding-JDBC 介绍   Sharding-JDBC 是当当网研发的开源分布式数据库中间件,从3.0开始其被包含在Sharding-Sphere中,之后该项目进入Apache孵化器,4.0版本之后的为Apache版本   ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-S...

pkyShare 的博客 2884

分库分表——sharding-sphere

sharding-sphere 简介 Sharding-Sphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar这3款相互独立的产品组成。他们均提供标准化的数据分片、读写分离、柔性事务和数据治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。 官网 http://shardingjdbc.io/ Github https://github.com/sharding-s

GY的的专栏 1367

有关Sharding-JDBC的一些研究!

如上图分别是三个数据库中的user表,其中master-user为database0数据库中的user表,salve-user1为database1中的user表,salve-user2为database2中的user表。主键冲突了,其实这是由于插入的时候使用的database0,但是查询使用的是database1和database2,但是我在从库内并没有ID是100的数据,所以JPA判定我为插入,但是数据库内缺有这样的数据。主库进行增删改操作,从库进行查询操作,如下图为本文数据库的三个表。

2401_87878486的博客 902

解析ShardingSphere:强大的分布式数据库中间件

ShardingSphere是一套开源的分布式数据库中间件,旨在为分布式数据库架构提供一系列服务。作为一套完整的解决方案,ShardingSphere包含JDBC和Proxy两大核心组件,它们均提供标准化的数据分片、分布式事务处理以及数据库治理功能。无论是在Java同构环境中还是在多语言、云原生等异构环境中,ShardingSphere都能够有效地工作。

weixin_62647396的博客 1387

Sharding-JDBC——数据分片——分表(最全demo)

标准分片策略适用于单分片键,此策略支持和两个分片算法。其中是必选的,用于处理和IN的分片。是可选的,用于处理BETWEEN==、AND>=

cxclll的博客 1012

深度剖析分库分表最强辅助Sharding Sphere

Sharding-SphereSharding-JDBC最早是当当网内部使用的一款分库分表框架,到2017年的时候才开始对外开源,这几年在大量社区贡献者的不断迭代下,功能也逐渐完善,现已...

艾小仙的专栏 1009
上一篇: 分布式系列之聊聊Nginx实现原理
下一篇: 分布式调度框架Quartz和xxl-job实践
solihawk
博客等级 码龄17年 7995粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值