*/publicclassDataSourceAlgimplementsPreciseShardingAlgorithm<String>{privatestaticLoggerLOG=LoggerFactory.getLogger(DataSourceAlg.class);@OverridepublicStringdoSharding(Collection<String>names,PreciseShardingValue<String>value){LOG.debug("分库算法参数 {},{}",names,value);int hash=HashUtil.rsHash(String.valu...
Sharding-JDBC对JDBC规范的重写思路是针对DataSource、Connection、Statement、PreparedStatement和ResultSet五个核心接口封装,将多个真实JDBC实现类集合(如:MySQL JDBC实现/DBCP JDBC实现等)纳入Sharding-JDBC实现类管理。 Sharding-JDBC尽量最大化实现JDBC协议,包括addBatch这种在JPA中会使用的批量更新功能。但分片JDBC毕竟与原...
本文主要基于 Sharding-JDBC 1.5.0 正式版 1. 概述 2. SQLRouteResult 3. 路由策略x 算法 4. SQL 路由 5. DatabaseHintSQLRouter 6. ParsingSQLRouter 6.1 SimpleRoutingEngine 6.2 ComplexRoutingEngine 6.3 CartesianRoutingEngine 6.3 ParsingSQLRouter 主#route() 1. 概述 本文分享分表分库路由相关的实现。涉...
从最开始 Sharding-JDBC 1.0 版本只有数据分片,到 Sharding-JDBC 2.0 版本开始支持数据库治理(注册中心、配置中心等等),再到 Sharding-JDBC 3.0版本又加分布式事务 (支持Atomikos、Narayana、Bitronix、Seata),如今已经迭代到了 Sharding-JDBC 4.0 版本。 现在的 ShardingSphere 不单单是指某个框架而是一个生态圈,这个...
数据源分片、表分片仅是两个不同维度的分片,他们能用的分片策略规则是一样的,Sharding-JDBC中提供了常用的分片策略实现。分片策略由两部分构成: 分片健 分片算法 ⑦ 分片策略配置 对于分片策略存有数据源分片策略和表分片策略两种维度。两种策略的API完全相同。 数据源分片策略:对应于DatabaseShardingStrategy。用于...
本文主要基于 Sharding-JDBC 1.5.0 正式版 1. 概述 2.KeyGenerator 2.1 DefaultKeyGenerator 2.2 HostNameKeyGenerator 2.3 IPKeyGenerator 2.4 IPSectionKeyGenerator 1. 概述 本文分享 Sharding-JDBC分布式主键实现。 官方文档《分布式主键》对其介绍及使用方式介绍很完整,强烈先阅读。下面先引用下分布式主键的实现动机: ...
一、Sharding-JDBC 简介 Sharding-JDBC 最早是当当网内部使用的一款分库分表框架,到2017年的时候才开始对外开源,这几年在大量社区贡献者的不断迭代下,功能也逐渐完善,现已更名为 ShardingSphere,2020年4⽉16⽇正式成为 Apache 软件基⾦会的顶级项⽬。
本文主要基于 Sharding-JDBC 1.5.0 正式版 1. 概述 2. ExecutorEngine 2.1 ListeningExecutorService 2.2 关闭 2.3 执行 SQL 任务 3. Executor 3.1 StatementExecutor 3.2 PreparedStatementExecutor 3.3 BatchPreparedStatementExecutor 4. ExecutionEvent 4.1 EventBus ...
我是Sharding-JDBC,我是水平分片世界的神。我的职责是透明化水平分库分表所带来的影响,让使用方尽量像使用一个数据库一样使用水平分片之后的数据库集群,或者像使用一个数据表一样使用水平分片之后的数据表。 我的法力,来源于我的创造者为我设计的内核,它把 SQL 语句的处理分成了 SQL 解析 =>SQL 路由 => SQL...
ShardingSphere的前身就是Sharding-JDBC,所以它是整个框架中最为经典、成熟的组件,我们先从Sharding-JDBC框架入手学习分库分表。 二、核心概念 在开始Sharding-JDBC分库分表具体实战之前,我们有必要先了解分库分表的一些核心概念。 分片 一般我们在提到分库分表的时候,大多是以水平切分模式(水平分库、分表)为基础来说的...