Apache ShardingSphere 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Apache ShardingSphere 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Apache ShardingSphere 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Apache ShardingSphere 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Apache ShardingSphere 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache-2.0
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织 Apache
地区 国产
投 递 者 ZenPHP
适用人群 未知
收录时间 2016-01-27

软件简介

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

Apache ShardingSphere 定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。 它通过关注不变,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。

Apache ShardingSphere 5.x 版本开始致力于可插拔架构,项目的功能组件能够灵活的以可插拔的方式进行扩展。 目前,数据分片、读写分离、多数据副本、数据加密、影子库压测等功能,以及对 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 与协议的支持,均通过插件的方式织入项目。 开发者能够像使用积木一样定制属于自己的独特系统。Apache ShardingSphere 目前已提供数十个 SPI 作为系统的扩展点,而且仍在不断增加中。

ShardingSphere 已于2020年4月16日成为 Apache 软件基金会的顶级项目。 欢迎通过邮件列表参与讨论。

ShardingSphere-JDBC

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

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

ShardingSphere-JDBC Architecture

ShardingSphere-Proxy

定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供 MySQL 和 PostgreSQL 版本,它可以使用任何兼容 MySQL/PostgreSQL 协议的访问客户端(如:MySQL Command Client, MySQL Workbench, Navicat 等)操作数据,对 DBA 更加友好。

  • 向应用程序完全透明,可直接当做 MySQL/PostgreSQL 服务端使用。
  • 适用于任何兼容 MySQL/PostgreSQL 协议的的客户端。

ShardingSphere-Proxy Architecture

ShardingSphere-Sidecar(TODO)

定位为 Kubernetes 的云原生数据库代理,以 Sidecar 的形式代理所有对数据库的访问。 通过无中心、零侵入的方案提供与数据库交互的的啮合层,即 Database Mesh,又可称数据库网格。

Database Mesh 的关注重点在于如何将分布式的数据访问应用与数据库有机串联起来,它更加关注的是交互,是将杂乱无章的应用与数据库之间的交互进行有效地梳理。 使用 Database Mesh,访问数据库的应用和数据库终将形成一个巨大的网格体系,应用和数据库只需在网格体系中对号入座即可,它们都是被啮合层所治理的对象。

ShardingSphere-Sidecar Architecture

  ShardingSphere-JDBC ShardingSphere-Proxy ShardingSphere-Sidecar
数据库 任意 MySQL/PostgreSQL MySQL/PostgreSQL
连接消耗数
异构语言 仅 Java 任意 任意
性能 损耗低 损耗略高 损耗低
无中心化
静态入口

混合架构

ShardingSphere-JDBC 采用无中心化架构,适用于 Java 开发的高性能的轻量级 OLTP 应用;ShardingSphere-Proxy 提供静态入口以及异构语言的支持,适用于 OLAP 应用以及对分片数据库进行管理和运维的场景。

Apache ShardingSphere 是多接入端共同组成的生态圈。 通过混合使用 ShardingSphere-JDBC 和 ShardingSphere-Proxy,并采用同一注册中心统一配置分片策略,能够灵活的搭建适用于各种场景的应用系统,使得架构师更加自由地调整适合与当前业务的最佳系统架构。

ShardingSphere Hybrid Architecture

功能列表

数据分片

  • 分库 & 分表
  • 读写分离
  • 分片策略定制化
  • 无中心化分布式主键

分布式事务

  • 标准化事务接口
  • XA 强一致事务
  • 柔性事务

数据库治理

  • 分布式治理
  • 弹性伸缩
  • 可观测性(分布式跟踪、指标度量)
  • 数据加解密
  • 影子表压测
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (59)

加载中
ShardingSphere代理模式,我看了下 只有对表的字段进行加密的 对数据库 用户名、密码 没有加密的功能??
2020/07/09 16:43
回复
举报
order一个库 表order_1 order_2 一个库 order_item 表 order_item_1 order_item2,连接查询 一直说mybatis 系统异常 然后是数据下表越界,这样的sql 不允许吗? 我分表对这两个表新增都是ok的,但是就是连接查询有问题,分别查询也没问题,求大佬解决一下,这样的查询是不允许,还是暂时不支持呢
2019/12/23 14:35
回复
举报
hint分片怎么注入分片字段
2019/06/20 15:51
回复
举报
张亮_Apache软件作者
hint分片无需注入分片字段,是通过SQL之外的元素直接分片的策略。 由于平时只关注邮件列表,如有问题,欢迎订阅: https://shardingsphere.apache.org/community/cn/contribute/subscribe/
2019/11/20 22:00
回复
举报
为什么动态分表要去掉?
2019/06/04 10:07
回复
举报
张亮_Apache软件作者
因为可以使用orchestration模块随时动态修改分片策略,并且可以动态生效(无需重启) 由于平时只关注邮件列表,如有问题,欢迎订阅: https://shardingsphere.apache.org/community/cn/contribute/subscribe/
2019/11/20 22:01
回复
举报

引用来自“叫我小宝就好”的评论

3.0.0版本Hint分片不生效,HintManager hintManager = HintManager.getInstance() 下面的sql不会执行HintShardingAlgorithm分片,切换到3.1.0就可以了,是bug吗,还是配置不一样
跟着源码,找到原因了,3.0.0版本Hint分片需要同时配置databaseStrategy和tableStrategy为hint,才能走到hint分片,而3.1.0单独配置某个虽然也可以,但是代码不是走的routeByHint(没有深入去研究了)
2019/02/27 10:07
回复
举报
您好,我在使用sharding-sphere,3.1.0版本,分页查询只返回第一页的数据。
2019/02/26 14:31
回复
举报
张亮_Apache软件作者
问题的信息比较少,需要提供SQL、分片策略配置以及sql.show的log日志。 由于平时只关注邮件列表,如有问题,欢迎订阅: https://shardingsphere.apache.org/community/cn/contribute/subscribe/
2019/11/20 22:03
回复
举报
3.0.0版本Hint分片不生效,HintManager hintManager = HintManager.getInstance() 下面的sql不会执行HintShardingAlgorithm分片,切换到3.1.0就可以了,是bug吗,还是配置不一样
2019/02/26 11:59
回复
举报

引用来自“叫我小宝就好”的评论

sharding-sphere 3.1.0 执行时由于我配置有误导致内部报错,但是抛出异常时,在ShardingPreparedStatement类,execute()方法,执行finally代码块的 refreshTableMetaData(connection.getShardingContext(), routeResult.getSqlStatement()) 由于routeResult(这应该是内部报错导致的)为空报了NullPointerException异常,导致内部报错无法定位,我是切换到3.0.0才定位到自己的错误,在这里提一下,不知道是不是bug,希望可以修复
只要是内部错误,都报NullPointerException,这个要修复一下,不然自己都不知道错在哪里
2019/02/25 15:51
回复
举报
张亮_Apache软件作者
其实并不一定是错误都会抛出NPE,而是预期之外的错误才会NPE,预期内的错误还是会抛相关异常。因此预期外的错误都算bug,可以具体问题具体分析,看看哪些预期外异常可一一修复。 由于平时只关注邮件列表,如有问题,欢迎订阅: https://shardingsphere.apache.org/community/cn/contribute/subscribe/
2019/11/20 22:04
回复
举报
sharding-sphere 3.1.0 执行时由于我配置有误导致内部报错,但是抛出异常时,在ShardingPreparedStatement类,execute()方法,执行finally代码块的 refreshTableMetaData(connection.getShardingContext(), routeResult.getSqlStatement()) 由于routeResult(这应该是内部报错导致的)为空报了NullPointerException异常,导致内部报错无法定位,我是切换到3.0.0才定位到自己的错误,在这里提一下,不知道是不是bug,希望可以修复
2019/02/25 15:46
回复
举报
sharding-sphere 3.0.0.M4的jpa demo不配置服务编排的情况下也会加载Orchestration Configuration,导致报错 java.lang.IllegalStateException: Missing the type of datasource configuration in orchestration configuration,你们没有这个情况吗?
2018/10/24 00:06
回复
举报
张亮_Apache软件作者
如果使用sharding-jdbc,是否使用治理模块完全取决于用户是否在pom中引用了相关模块的坐标;如果使用sharding-porxy,是自带治理功能的(只要不在yaml中配置就不会开启),这个问题应该是治理的配置中缺失了关键信息(数据源配置)。由于平时只关注邮件列表,如有问题,欢迎订阅: https://shardingsphere.apache.org/community/cn/contribute/subscribe/
2019/11/20 22:10
回复
举报
更多评论
发表于数据库专区
2020/11/14 15:08

Apache ShardingSphere 5.0.0-alpha 发布

Apache ShardingSphere 5.0.0 发布了 alpha 版本,自上个版本 4.1.1 发布以来,Apache ShardingSphere 一直在修复社区反馈的问题、加强功能和开发新特性。 根据官方的说法,5.x 是 Apache ShardingSphere 从分库分表中间件向分布式数据库生态转化的里程碑,从 4.x 版本后期开始打磨的可插拔架构在 5.x 版本已逐渐成型,项目的设计理念和 API 都进行了大幅提升。 Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组...

3
5
发表于数据库专区
2020/04/16 09:10

Apache ShardingSphere 结束孵化,晋升为 ASF 顶级项目

Apache ShardingSphere 结束孵化顺利毕业,晋升为 Apache 基金会顶级项目。 ShardingSphere 项目 VP 张亮发布了此条消息(ASF 官网公告还未发出): 北京时间 4 月 16 日早上 5:30 分,Apache 董事会通过了 Apache ShardingSphere 从孵化器毕业成为顶级项目!经历了 523 天的孵化历程,我们将迈向下一个里程碑。 ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 Sharding-JDBC、Sharding-Proxy 和 Sh...

29
61
发表于数据库专区
2020/01/14 10:08

ShardingSphere 4.0.0 发布,ShardingSphere 四周年贺礼

本次发布的4.0.0正式版本将前不久发布的4.0.0-RC3版本的核心功能不断打磨优化,修复社区反馈的问题,且持续进行微内核重构打磨;在社区建设方面,不断践行Apache Way,致力于打造充满活力、规范、互助的社区。 Apache ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(规划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务、数据...

18
17
发表于数据库专区
2019/08/24 07:15

Apache ShardingSphere 4.0.0 RC2 发布

Apache ShardingSphere 4.0.0 RC2 发布了,作为 ShardingSphere 进入 Apache 基金会后第二个发布版本,4.0.0 RC2 带来了以下更新内容: API 调整 删除 LogicIndex 配置 API,改为内部自动生成逻辑索引名称。 更新及增加脱敏模块 API,支持脱敏数据与原文数据共存。 新功能 集成分布式事务 Seata。 用户可以使用 ShardingProxy 进行数据脱敏。 用户可以使用 Leaf-segment 生成器来获取分布式 ID。 支持使用 SkyWalking 插件进行应...

7
13
发表于数据库专区
2019/04/22 10:52

Apache 官宣!Sharding-Sphere 首个 Apache 版本发布

竹外桃花三两枝,春江水暖鸭先知。四月春回大地之时,Apache ShardingSphere 4.0.0-RC1终于在今天与大家见面了! 距离ShardingSphere 3.x的时代已有半年之久。在这半年的时间里,ShardingSphere团队夜以继日,持续发力。在产品核心功能方面,我们不断开发新的、重大的功能,修复社区反馈的问题,且持续进行微内核重构打磨;在社区建设方面,不断践行Apache Way,致力于打造充满活力、规范、互助的社区。 作为进入Apache基金会后...

21
56
发表于数据库专区
2019/01/06 09:53

Apache Sharding-Sphere 3.1.0 正式版发布

Apache Sharding-Sphere 3.1.0 发布了,Sharding-Sphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。 主要改进内容包括: API 变化 调整 orchestration 注册中心的持久化结构 调整 Sharding-J...

4
29
发表于数据库专区
2018/12/20 07:16

Sharding-Sphere 3.1.0.M1 正式发布

Sharding-Sphere 3.1.0.M1 发布。 Sharding-Sphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar(规划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、容器、云原生等各种多样化的应用场景。 规划线路图: 3.1.0.M1 更新内容: API changes Adjust persist structure for orchestra...

2
12
发表于数据库专区
2018/11/11 08:18

Sharding-Sphere 正式步入 Apache 基金会孵化器

美国时间2018年11月10日6点,分布式数据库中间件开源软件 Sharding-Sphere 正式步入 Apache 基金会孵化器。 根据 Apache 基金会邮件列表显示,7个约束性投票(binding votes)和7个无约束性投票(non-binding votes)的投票,全部持赞同意见,无弃权票和反对票,投票顺利通过。 Apache Sharding-Sphere 是目前 Apache 基金会中首个透明化分布式数据库中间件项目。Sharding-Sphere 是一套开源的分布式数据库中间件解决方案组成的生态...

10
18
发表于数据库专区
2018/10/24 12:58

Sharding-Sphere 3.0.0 正式发布

经过 M1-M4 四个版本,Sharding-Sphere 3.0.0 迎来了正式版。 Sharding-Sphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar(规划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、容器、云原生等各种多样化的应用场景。 规划线路图: 更新内容: Milestones Sharding-Proxy launch...

5
14
发表于数据库专区
2018/09/29 14:03

Sharding-Sphere 3.0.0.M4 正式发布

Sharding-Sphere 3.0.0.M4 正式发布了,Sharding-Sphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(规划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。 更新内容如下: 在九月份初发布的Sharding-Sphere 3.0.0.M3基础上,九月末的Sharding-Sp...

5
14
发表于数据库专区
2018/09/06 10:55

Sharding Sphere 3.0.0.M3 发布,支持 XA 事务

Sharding Sphere 3.0.0.M3 发布了,更新如下: New Features Sharding-Proxy ISSUE #902 Support XA transaction Enhancements Core ISSUE #373 Support order by ? Sharding-JDBC ISSUE #1153 Reconstruct orchestration module to make it independent API changes ISSUE #1153 Adjust the maven artifactId for Orchestration module ISSUE #1203 Change Spring namespace xsd for Sharding + Master-slave configuration B...

3
7
发表于数据库专区
2018/08/08 08:18

Sharding-Sphere 3.0.0.M2,分布式数据库中间件解决方案

Sharding-Sphere 3.0.0.M2 现已发布。 Sharding-Sphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar(规划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、容器、云原生等各种多样化的应用场景。 本期看点 本次更新不仅让 Sharding-Sphere 更加稳定可靠,也使其功能更加强大。在此为...

7
23
发表于数据库专区
2018/05/08 22:34

Sharding-JDBC 3.0 即将发布,更名 Sharding-Sphere !

8日下午,知名开源数据库中间件 Sharding-JDBC 创始人张亮在朋友圈中发布了一个动态,表示 Sharding-JDBC 3.0 将于近期发布。 从该动态我们可以知道,从 3.0 开始,Sharding-JDBC 将更名为 Sharding-Sphere。“Sphere”一词可以解释为“圈子”,那么,Sharding-JDBC 更名为 Sharding-Sphere,是否意味着在原来的基础上会增加功能特性,将其打造成一个数据库中间件的生态系统?高质量的知名项目易名绝非小事,我们有理由相信 Sh...

17
22
发表于数据库专区
2018/02/16 14:02

Sharding-JDBC 2.0.3 发布,TCL 语句支持

大年初一,先给大家拜年了,祝大家新春快乐。 Sharding-JDBC 2.0.3正好赶在在大年初一发布,希望在新的一年里能够继续迅速发展。此版本是 Sharding-JDBC 的第 28 个正式发布版本,有分库分表和读写分离需求却仍未找到合适方案的场景,请不要再次错过。2.0.3 的主要功能是增加对TCL语句的支持,并且对目前存在的BUG进行修复。Sharding-JDBC 2.0.3将是 2.0.x的最终版本。 下一个版本将是2.1.0, Sharding-JDBC在2.1.0版本将全面支...

1
5
发表于数据库专区
2018/01/18 17:14

Sharding-JDBC 2.0.2 发布,CREATE/DROP INDEX 支持

该版本是 Sharding-JDBC 的第 27 个正式发布版本,有分库分表和读写分离需求却仍未找到合适方案的场景,请不要再次错过。 2.0.2 的主要功能是增加对索引增加和删除的 SQL 支持。此版本还修改了不少与 SQL 解析相关的 bug 和性能优化。 Sharding-JDBC 已经正式加入 Opentracing 组织,截图如下: 欢迎访问 Sharding-JDBC 的官网:http://shardingjdbc.io/。...

5
15
发表了资讯
2017/12/04 14:13

重磅! 分布式数据库中间件 Sharding-JDBC 2.0.0 正式发布

Sharding-JDBC 2.0.0,在经过几个月的开发,和3个里程碑的迭代之后正式发布。Sharding-JDBC集分库分表、读写分离、分布式主键、柔性事务和数据治理与一身,提供一站式的解决分布式关系型数据库的解决方案。 从2.x版本开始,Sharding-JDBC正式将包名、Maven坐标、码云仓库、GitHub仓库和官方网站统一为io.shardingjdbc。这意味着除了当当的无私奉献,我们也乐于采纳第三方公司的代码贡献。本次2.0.0的版本,由当当与数人云共同开...

40
94
发表了资讯
2017/11/21 10:09

Sharding-JDBC 2.0.0.M3 发布,ConfigMap 支持

这是Sharding-JDBC 2.0发布之前的第3个正式里程碑版本,也是第24个正式发布版本,有分库分表和读写分离需求却仍未找到合适方案的场景,请不要再次错过。M3版本的数据库治理能力也趋于完善,欢迎试用。 2.0.0.M3的主要更新是可以动态的启用和禁用数据库读写分离从库的能力,使一主多从的从库切换更加从容,配合M1的配置动态切换以及M2的数据库访问层熔断能力,可以更加有效的完成对数据库的治理。 ConfigMap可以将用户自定义的分...

5
21
发表了资讯
2017/11/06 10:57

Sharding-JDBC 2.0.0.M2 正式发布,数据库访问治理

这是Sharding-JDBC 2.0发布之前的第2个正式里程碑版本,也是第23个正式发布版本,有分库分表、读写分离需求却仍未找到合适方案的场景,请不要再次错过。 2.0.0.M2是针对DAO程序访问数据库治理的尝试,主要能力是支持DAO访问数据库的熔断,在服务熔断之上提供更加细粒度的数据库保护机制。 由于2.x更加专注于配置动态化以及数据库的访问服务治理,因此也对M3即将对Opentraceing系列的APM系统支持进行了前期的开发。M3版本还将完成...

5
42
发表了资讯
2017/10/11 10:31

Sharding-JDBC 2.0.0.M1 正式发布,全新的API & 配置动态化

全新的Sharding-JDBC 2.0来了。全新的Maven坐标,全新的包名,全新的API以及全新的命名空间以及sharding-jdbc-spring-boot-starter,Sharding-JDBC 2.0正式将com.dangdang.ddframe.rdb更名为io.shardingjdbc。这是Sharding-JDBC的第22个正式发布版本,有分库分表、读写分离需求却仍未找到合适方案的场景,请不要再次错过。 与1.x关注于SQL兼容性、分库分表、读写分离不同,2.x将专注于配置动态化以及数据库的访问服务治理。 本次...

13
41
发表了资讯
2017/09/19 16:12

Sharding-JDBC 1.5.4 发布,1.x 系列的最终版本

Sharding-JDBC 1.5.4 正式发布。作为分布式数据库中间件,它关注如何简化分布式数据库带来的复杂度,让工程师象使用单一数据库一样使用分布式的数据库。它完整的实现了分库分表、读写分离、分布式主键、柔性事务等功能,让您的数据库应用具备透明化的可水平扩展的能力。 1.5.4的主要更新是BUG的修复,让1.5.x版本更加稳定,详细更新请参见Release Notes。如果再无紧急issue需要修复,它将是1.x的最终版本。 Sharding-JDBC即将进...

6
29
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2020/03/29 16:20

ShardingSphere

ShardingSphere在中小企业需要分库分表的时候用的会比较多,因为它维护成本低,不需要额外增派人手;而且目前社区也还一直在开发和维护,还算是比较活跃。 但是中大型公司一般会选择选用 Mycat 这类 proxy 层方案,因为可能大公司系统和项目非常多,团队很大,人员充足,那么最好是专门弄个人来研究和维护 Mycat, 然后大量项目直接透明使用即可。 一、ShardingSphere概念 1、概念 ShardingSphere是一套开源的分布式数据库中间件...

0
0
发表于AI & 大数据专区
2020/09/21 14:02

ShardingSphere学习:02-ShardingSphere介绍

## ShardingSphere的发展历程:从Sharding-JDBC到Apache顶级项目 说到 ShardingSphere 的起源,我们不得不提 Sharding-JDBC 框架,该框架是一款起源于当当网内部的应用框架,并于 2017 年初正式开源。从 Sharding-JDBC 到 Apache 顶级项目,ShardingSphere 的发展经历了不同的演进阶段。纵观整个 ShardingSphere 的发展历史,我们可以得到时间线与阶段性里程碑的演进过程图: ![ShardingSphere演进过程图](https://oscimg.osch...

0
0
发表了博客
2020/03/25 17:19

ShardingSphere 分页

分页性能 性能瓶颈 查询偏移量过大的分页会导致数据库获取数据性能低下,以MySQL为例: SELECT * FROM t_order ORDER BY id LIMIT 1000000, 10 这句SQL会使得MySQL在无法利用索引的情况下跳过1000000条记录后,再获取10条记录,其性能可想而知。 在分库分表的情况下(假设分为2个库),为了保证数据的正确性,SQL会改写为: SELECT * FROM t_order ORDER BY id LIMIT 0, 1000010 即将偏移量前的记录全部取出,并仅获取排序后...

0
0
发表了博客
01/09 12:33

ShardingSphere 实战

目录 一、项目介绍 1.1、shardingSphere介绍 1.2、sharding-JDBC、sharding-Proxy 1.3、sharding-JDBC、sharding-Proxy和Sharding-SideCar 区别 1.4、sharding-JDBC、sharding-Proxy下载 二、sharding-JDBC 2.1、sharding-JDBC简介 2.2 、sharding-JDBC主要功能 2.3、sharding-JDBC内部结构 一、项目介绍 1.1、shardingSphere介绍 1.2、sharding-JDBC、sharding-Proxy 由京东数科维护 1.3、sharding-JDBC、sharding-Proxy和Sha...

0
0
发表了博客
2020/03/25 17:05

ShardingSphere 内核

ShardingSphere的3个产品的数据分片主要流程是完全一致的。 核心由SQL解析 => 执行器优化 => SQL路由 => SQL改写 => SQL执行 => 结果归并的流程组成。 SQL解析 分为词法解析和语法解析。 先通过词法解析器将SQL拆分为一个个不可再分的单词。再使用语法解析器对SQL进行理解,并最终提炼出解析上下文。 解析上下文包括表、选择项、排序项、分组项、聚合函数、分页信息、查询条件以及可能需要修改的占位符的标记。 解析过程分为词法...

0
1
发表于软件架构专区
2020/07/08 17:25

1、ShardingSphere基本概念

# 1 基本概念 ``` 什么是Sharding Sphere 1) 一套开源的分布式数据库中间件解决方案 2) 有三个产品: ShardingSphere-JDBC、ShardingSphere-Proxy、ShardingSphere-Sidecar 3) 定位为关系型数据库中间件, 合理在分布式环境下使用关系型数据库操作 ``` # 2 分库分表 ``` 1) 分库分表有两种方式: 垂直切分和水平切分 2) 垂直切分: 垂直分表和水平分表 a) 垂直分表: 表中一些字段放在一个表里, 另一些字段放在另一个表里 b) 垂直分库...

0
0
发表于AI & 大数据专区
2020/09/21 19:56

ShardingSphere学习:04-ShardingSphere中的配置体系是如何设计的?

## 什么是行表达式? **行表达式是 ShardingSphere 中用于实现简化和统一配置信息的一种工具,在日常开发过程中应用得非常广泛。** 它的使用方式非常直观,只需要在配置中使用 ${expression} 或 $->{expression} 表达式即可。 基于行表达式语法,${begin..end} 表示的是一个从"begin"到"end"的范围区间,而多个 ${expression} 之间可以用"."符号进行连接,代表多个表达式数值之间的一种笛卡尔积关系。 类似场景也可以使用枚举的...

0
0
2019/06/14 15:59

分库分表-ShardingSphere

- 前言 一般mysql单表存储数据量小于500万左右或者容量小于2GB的时候,它的读写性能是最好的。但是当业务发展到一定程度,数据增长到一定程度的时候,我们就会发现为什么查询速度越来越慢了,甚至还会出现数据库挂了等其他一系列问题。那么此时我们就需要采取一些方案来解决这些问题,一般如下: 1.分库分表 2.读写分离 3.利用NoSql 这里我暂时只记录分库分表。 - 调研 一般业界用的比较多的是阿里的MyCat以及当当的Sharding-Jd...

18
0
发表于AI & 大数据专区
2020/02/25 15:45

shardingsphere数据库中间件

shardingsphere组成: sharding-jdbc、sharding-proxy、sharding-sidecar(计划中) 核心功能以及整体框架图 sharding-jdbc特点 1. 轻量级Java框架,在Java的JDBC层提供额外服务 2.适用于任何基于JDBC的ORM框架 3.支持任何第三方数据库连接池 4.支持任意实现JDBC规范的数据库 sharding-Proxy 1.透明的数据库代理端,目前支持MYSQL/PostgreSQL 2.兼容MYSQL/PostgreSQL协议的客户端 sharding-sidecar(计划中) 1.k8s的云原生数据库代...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2020/04/20 18:09

80% 的代码曾由一人提交, Apache ShardingSphere 何以从 ASF 毕业并晋升 TLP

4月16日,Apache 软件基金会(Apache Software Foundation,ASF)宣布 Apache ShardingSphere 毕业并成为 Apache 顶级项目(Top Level Project,TLP)。这也是目前 ASF 首个分布式数据库中间件项目。 ASF 是全球最大的开源软件基金会,是专门为支持开源软件项目而办的一个非盈利性组织,提供组织、法律和财务等方面的支持,其支持的 Apache 项目与子项目中,所发行的软件产品都遵循 Apache 许可证(Apache License)。据其2019年...

12
35
发表了问答
2019/12/17 21:42

千人齐聚共探开源,剑指源码尖峰对话 | 2019 OSC 年终盛典图文回顾

12月15日,2019年 OSC源创会年终盛典在深圳科兴科学园国际会议中心成功举办,本次年终盛典 活动详情 请查看, PPT下载 请点击,视频回看请点击。 作为开源中国官方最盛大的技术沙龙,本次年终盛典为期 1 天,上午为主会场,下午设置架构、大前端、综合技术、开源治理、腾讯开源共 5 个分会场。 大会邀请 30+ 国内知名技术大牛、50+ 优秀开源软件作者,聚集了近千名开发精英,以“剑指源码,尖峰对话”为主题,共同探讨 2019 年的...

9
2
发表于数据库专区
2018/12/13 09:08

使用sharding-jdbc,对单库作部分分表出现问题

@亮_ShardingSphere 你好,想跟你请教个问题: 目前使用sharding-jdbc <dependency> <groupId>io.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-namespace</artifactId> <version>3.0.0.M1</version> </dependency> 我使用sharding-jdbc,对单库作部分分表,使用时出现了内存溢出的问题。原因为查询比不分表时慢了很多,线程等待太多导致。 找到的之间回答: 改进方案,改用多数据源,但是出现不需要...

5
0
发表于数据库专区
2019/02/28 16:23

sharding-proxy读写分离多库配置

1. sharding-proxy读写分离和分库分表可以放在一个配置文件中吗/ 2. sharding-proxy读写分离有多个库的时候在一个配置文件中怎么配置多个主库和多个从库?

2
2
发表于数据库专区
2020/01/17 15:39

欢迎参与Apache ShardingSphere问卷调查

大家好,Apache ShardingSphere在今天已经开源了4年零一天。在4岁生日后的第一天,邀请大家参与一下Apache ShardingSphere问卷调查: https://www.wjx.cn/m/52465077.aspx 感谢您关注和参与。您的意见、建议和参与,会让开源社区越来越好。

1
0
发表于数据库专区
2018/07/19 13:31

sharding-jdbc 多数据源

如果只有部分数据库分库分表,是否需要将不分库分表的表也配置在分片规则中? 回答: 是的。因为Sharding-JDBC是将多个数据源合并为一个统一的逻辑数据源。因此即使不分库分表的部分,不配置分片规则Sharding-JDBC即无法精确的断定应该路由至哪个数据源。 但是Sharding-JDBC提供了两种变通的方式,有助于简化配置。 方法1:配置default-data-source,凡是在默认数据源中的表可以无需配置在分片规则中,Sharding-JDBC将在找不到分...

7
0
发表了问答
2017/03/06 17:32

高手问答第 144 期 — 轻量级数据库中间层 Sharding-JDBC 深度解析

OSCHINA 本期高手问答(2017 年 3 月 7 日 — 3 月 13 日)我们请来了 @terrymanu (张亮) 和大家探讨分布式数据库中间层的适用场景和自研的选型过程。 @terrymanu 张亮,目前是当当架构部负责人。主要负责分布式中间件以及私有云平台的搭建。致力于开源,目前主导两个开源项目 Elastic-Job 和 Sharding-JDBC。 基于关系型数据库的水平扩展方案有很多开源的解决方案,但成熟稳定的产品凤毛麟角。 当当自研的数据库中间层 Shar...

75
72
2019/03/09 15:05

sharding-proxy可以自定义分表规则吗

在使用sharding-proxy时,可以自定义分表的规则吗,比如按照时间来分表的

2
0
发表于数据库专区
2018/12/25 14:38

sharding-jdbc 如何动态实现物理表的配置

问题描述: 18年订单表分片配置: <sharding:table-rules> <sharding:table-rule logic-table="t_trade_order" actual-data-nodes="axolotl_ds_ms_0.t_trade_order_20180${1..9},axolotl_ds_ms_0.t_trade_order_2018${10..12}" table-strategy-ref="orderTableStrategy"/> </sharding:table-rules> 19年不想在手动的修改配置文件了eg: <sharding:table-rules> ...

3
0
发表于数据库专区
2018/07/09 09:04

Sharding-jdbc对Oracle的批量插入支持吗?

3.0之后官网说明支持insert value(),()的写法请问对Oracle的支持咋样?我自己测试是不支持的?

4
0
发表于数据库专区
2019/10/14 21:14

按字段中其中两位进行分100张表,查询怎么定位到某一张表

user表userid一共16位例如1000006675948136——>user_13,用 其中13-15两位进行分表,一共分100张表,user_00,user_01...... 现在想根据一定条件查询出user_00表的数据怎么实现,或者查询user_00表一共有多少数据怎么查询

8
0
发表了问答
2017/08/17 15:17

sharding-jdbc1.5.1 事物方法中使用DefaultKeyGenerator生成的主键都是偶数

求助亮哥 @亮_dangdang ,使用的sharding-jdbc 1.5.1 我运行sharding-jdbc-example-mybatis中例子,发现生成的两条order的order_id都是偶数,于是写了新的方法再测试,发现生成的order_id都是偶数,而在非事物方法中运行DefaultKeyGenerator生成key的方法,发现生成的key奇数偶数都有,很奇怪的情况。 生成偶数order_id的代码截图如下: 配置文件 单独运行DefaultKeyGenerator,生成的Key奇偶数都有 Mapper相关配置...

2
0
发表于数据库专区
2018/09/28 10:50

sharding jdbc 3.0.0.M3 经常出现 数组下标越界异常

2018-09-28 10:45:47.311 ERROR 7348 --- [nio-8080-exec-6] c.a.advice.ControllerExceptionHandler : org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: io.shardingsphere.core.exception.ShardingException: io.shardingsphere.core.exception.ShardingException: java.util.concurrent.ExecutionException: java....

3
0
发表于软件架构专区
2019/04/12 07:15

高手问答第 226 期 —— 面对未来架构,如何追赶技术革新的脚步?

身处互联网行业的我们一直处在变革的最前端,受到行业发展浪潮的洗礼,不停歇地追赶着技术革新的脚步。特别是近几年来,互联网架构不断演化,经历了从集中式架构到分布式架构,再到云原生架构的过程。在这个演变过程中,我们可以深刻感受到一系列的格局变化 —— 软件改变世界,开源改变软件,云吞噬开源。每一次架构模式的升级都会给这个世界的合作模式带来变化。 “云原生”因能解决传统应用升级缓慢、架构臃肿、无法快速迭代...

82
49
发表于数据库专区
2019/01/18 15:23

ShardingSphere3.1单库不分表数据Limit查询问题

最近在开发过程中,遇到了一个问题。不分表的数据在进行分页查询过程中(Limit),查询结果不进行分页。而进行分表的数据不影响。 分表数据进行查询,最终数据归并结果为limit长度 不进行分表数据进行查询,最终结果为Limit 0,offset长度而不是limit的长度 请问,这个问题如何解决?

9
1
发表于DevOps专区
2019/05/20 14:23

@JFinal 波总 用sql String sql = "show columns from ymm_"+tableName; List list =Db.query(sql); 报错,之前是可以用的,什么情况啊

com.jfinal.plugin.activerecord.ActiveRecordException: io.shardingjdbc.core.parsing.parser.exception.SQLParsingUnsupportedException: Not supported token 'SHOW'. at com.jfinal.plugin.activerecord.DbPro.query(DbPro.java:109) at com.jfinal.plugin.activerecord.DbPro.query(DbPro.java:120) at com.jfinal.plugin.activerecord.Db.query(Db.java:85) at com.ymm.project.base.BaseModel.getModels(BaseModel.java...

4
0
发表了问答
2018/05/23 08:29

集成 Proxy 与 DB Mesh,Sharding-JDBC 3 将"Sharding"做到极致

嘉宾:张亮 作者:h4cd 提起数据库中间件,我们可以很自然地联想到 OneProxy、TDSQL、Sharding-JDBC 与 MyCat 等知名项目。在众多的数据库中间件实现技术中,通常存在两种架构模式,一种是 Proxy 架构(服务端架构),它独立部署,与应用分开,对不同数据库进行统一代理,以集群形式对数据库流量进行集中式管理与监控;另一种模式是客户端架构,常见形式是对 JDBC 进行修改与扩展,也就是中间件与应用不分开部署,在应用层对数据...

24
48
发表于服务端专区
2019/05/16 20:38

最近服务经常OOM,发现old区激增,存在大量无法释放的类,使用memory分析,GroovyClassLoder经常加载,求各位大佬解答

小弟第一次解决这种问题,并且项目中没有使用Groovy语言,但是引入了相关jar包,发现与数据库连接池相关,数据库连接池使用Druid,并且使用了Sharding-Sphere进行了单库分表;进行压测时发现内存使用90%以上;old经常会满,然后进行full GC释放一些; 下面时使用memory分析的一些图: 这是一些分析的图片,希望可以有大佬解答,如果还需要什么相关的分析请告知小弟;感谢感谢!

5
2
发表于开发技能专区
2019/05/16 10:51

@JFinal 波总 用sql查一张表是否存在时报错,之前的项目可以用的啊

sql:select * from information_schema.TABLES where TABLE_SCHEMA=(select database()) and `table_name` ='your table' 报错: com.jfinal.plugin.activerecord.ActiveRecordException: java.lang.UnsupportedOperationException: Cannot support SQL for `schema.table` at com.jfinal.plugin.activerecord.DbPro.find(DbPro.java:329) at com.jfinal.plugin.activerecord.DbPro.findFirst(DbPro.java:355) at com.jfinal.pl...

4
0
发表于数据库专区
2019/03/28 11:37

sharing-jdbc分片库与默认库可以jion吗

sql = select count(*) from t_device_info d join t_energy_hourdata e on d.id=e.deviceId where e.prj in (1,2) and e.sharingFlag='2018-03' limit 100 ### Cause: com.dangdang.ddframe.rdb.sharding.exception.ShardingJdbcException: com.dangdang.ddframe.rdb.sharding.exception.ShardingJdbcException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'energydata.t_device_info' doesn't exist]...

3
2
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
59 评论
1.1K 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部