![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
shard
佟印龙
这个作者很懒,什么都没留下…
展开
-
数据分片(6 强制分片路由)
实现动机实现机制实现动机通过解析 SQL 语句提取分片键列与值并进行分片是 Apache ShardingSphere 对 SQL 零侵入的实现方式。若 SQL 语句中没有分片条件,则无法进行分片,需要全路由。在一些应用场景中,分片条件并不存在于 SQL,而存在于外部业务逻辑。因此需要提供一种通过外部指定分片结果的方式,在 Apache ShardingSphere 中叫做 Hint。实现机制Apache ShardingSphere 使用 ThreadLocal 管理分片键值。可以通过编程的方原创 2020-12-01 15:20:26 · 380 阅读 · 0 评论 -
数据分片(5 分布式主键)
实现动机内置的主键生成器UUIDSNOWFLAKE实现动机传统数据库软件开发中,主键自动生成技术是基本需求。而各个数据库对于该需求也提供了相应的支持,比如 MySQL 的自增键,Oracle 的自增序列等。 数据分片后,不同数据节点生成全局唯一主键是非常棘手的问题。同一个逻辑表内的不同实际表之间的自增键由于无法互相感知而产生重复主键。 虽然可通过约束自增主键初始值和步长的方式避免碰撞,但需引入额外的运维规则,使解决方案缺乏完整性和可扩展性。目前有许多第三方解决方案可以完美解决这个问题,如 UUI原创 2020-12-01 15:19:54 · 287 阅读 · 0 评论 -
数据分片(4 行表达式)
实现动机语法说明配置数据节点配置分片算法实现动机配置的简化与一体化是行表达式所希望解决的两个主要问题。在繁琐的数据分片规则配置中,随着数据节点的增多,大量的重复配置使得配置本身不易被维护。通过行表达式可以有效地简化数据节点配置工作量。对于常见的分片算法,使用 Java 代码实现并不有助于配置的统一管理。通过行表达式书写分片算法,可以有效地将规则配置一同存放,更加易于浏览与存储。语法说明行表达式的使用非常直观,只需要在配置中使用 ${ expression } 或 $->{ expre原创 2020-12-01 15:18:30 · 545 阅读 · 0 评论 -
数据分片(3 配置)
分片规则数据源配置表配置数据节点配置分片策略配置自增主键生成策略分片规则分片规则配置的总入口。包含数据源配置、表配置、绑定表配置以及读写分离配置等。数据源配置真实数据源列表。表配置逻辑表名称、数据节点与分表规则的配置。数据节点配置用于配置逻辑表与真实表的映射关系。可分为均匀分布和自定义分布两种形式。均匀分布指数据表在每个数据源内呈现均匀分布的态势,例如:db0 ├── t_order0 └── t_order1 db1 ├── t_order0 └──原创 2020-12-01 15:15:04 · 150 阅读 · 0 评论 -
数据分片(2 分片)
分片键分片算法分片策略SQL Hint分片键用于分片的数据库字段,是将数据库(表)水平拆分的关键字段。例:将订单表中的订单主键的尾数取模分片,则订单主键为分片字段。 SQL 中如果无分片字段,将执行全路由,性能较差。 除了对单分片字段的支持,Apache ShardingSphere 也支持根据多个字段进行分片。分片算法通过分片算法将数据分片,支持通过 =、>=、<=、>、<、BETWEEN 和 IN 分片。 分片算法需要应用方开发者自行实现,可实现的灵活度非常高。目原创 2020-12-01 15:13:15 · 324 阅读 · 0 评论 -
数据分片(1 sql)
逻辑表真实表数据节点绑定表广播表逻辑表水平拆分的数据库(表)的相同逻辑和数据结构表的总称。例:订单数据根据主键尾数拆分为 10 张表,分别是 t_order_0 到 t_order_9,他们的逻辑表名为 t_order。真实表在分片的数据库中真实存在的物理表。即上个示例中的 t_order_0 到 t_order_9。数据节点数据分片的最小单元。由数据源名称和数据表组成,例:ds_0.t_order_0。绑定表指分片规则一致的主表和子表。例如:t_order 表和 t_order_i原创 2020-12-01 15:11:58 · 304 阅读 · 0 评论 -
SHARDINGSPHERE-SCALING(ALPHA)
规则配置引入依赖启动服务任务管理规则配置编辑%SHARDINGSPHERE_SCALING_HOME%/conf/server.yaml。详情请参见使用手册。引入依赖如果后端连接 PostgreSQL 数据库,不需要引入额外依赖。如果后端连接 MySQL 数据库,请下载 mysql-connector-java-5.1.47.jar,并将其放入 %SHARDINGSPHERE_SCALING_HOME%/lib 目录。启动服务sh %SHARDINGSPH..原创 2020-12-01 15:10:16 · 653 阅读 · 0 评论 -
SHARDINGSPHERE-PROXY
规则配置引入依赖启动服务使用ShardingSphere-Proxy规则配置编辑%SHARDINGSPHERE_PROXY_HOME%/conf/config-xxx.yaml。编辑%SHARDINGSPHERE_PROXY_HOME%/conf/server.yaml。引入依赖如果后端连接 PostgreSQL 数据库,不需要引入额外依赖。如果后端连接 MySQL 数据库,请下载 mysql-connector-java-5.1.47.jar,并将其放入 %S..原创 2020-12-01 15:09:03 · 574 阅读 · 0 评论 -
SHARDINGSPHERE-JDBC 介绍
最近在研究shard,官方文档很慢,就整理了一份,一下文章均转载于官方引入 maven 依赖规则配置创建数据源引入 maven 依赖<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core</artifactId> <version>${latest.r原创 2020-12-01 15:07:09 · 346 阅读 · 0 评论 -
shard-jdbc 支持sql 和不支持sql
支持的sqlSELECT * FROM tbl_name SELECT * FROM tbl_name WHERE (col1 = ? or col2 = ?) and col3 = ? SELECT * FROM tbl_name WHERE col1 = ? ORDER BY col2 DESC LIMIT ? SELECT COUNT(*), SUM(col1), MIN(col1), MAX(col1), AVG(col1) FROM tbl_name WHERE col1 = ? SEL原创 2020-11-30 20:49:31 · 651 阅读 · 0 评论