分布式mysql分库分表中间件,sharding领域的一站式解决方案。具备丰富、灵活的路由算法支持,能够方便DBA实现库的水平扩容和降低数据迁移成本。shark采用应用集成架构,放弃通用性,只为换取更好的执行性能与降低分布式环境下外围系统的宕机风险。目前shark每天为不同的企业、业务提供亿级别的sql读/写服务。
Shark的优点
完善的技术文档支持;
动态数据源的无缝切换;
丰富、灵活的分布式路由算法支持;
非proxy架构,应用直连数据库,降低外围系统依赖所带来的宕机风险;
业务零侵入,配置简单;
站在巨人的肩膀上(springjdbc、基于druid的sqlparser完成sql解析任务),执行性能高效、稳定;
提供多机sequenceid的API支持,解决多机sequenceid难题;
缺省支持基于zookeeper、redis3.x cluster作为集中式资源配置中心;
基于velocity模板引擎渲染内容,支持sql语句独立配置和动态拼接,与业务逻辑代码解耦;
提供内置验证页面,方便开发、测试及运维人员对执行后的sql进行验证;
提供自动生成配置文件的API支持,降低配置出错率;
Shark总体架构
Shark采用应用集成架构,其领域模型位于持久层(JdbcTemplate)和JDBC之间,也就是分布式数据层。
Shark与其它Sharding中间件功能对比
功能 | Cobar | Mycat | Heisenberg | Shark | TDDL | Sharding-JDBC |
是否开源 | 开源 | 开源 | 开源 | 开源 | 部分开源 | 开源 |
架构模型 | Proxy架构 | Proxy架构 | Proxy架构 | 应用集成架构 | 应用集成架构 | 应用集成架构 |
数据库支持 | MySQL | 任意 | 任意 | MySQL | 任意 | MySQL |
外围依赖 | 无 | 无 | 无 | 无 | Diamond | 无 |
使用复杂度 | 一般 | 一般 | 一般 | 简单 | 复杂 | 一般 |
技术文档支持 | 较少 | 付费 | 较少 | 丰富 | 无 | 一般 |
Shark的使用注意事项
不支持强一致性的分布式事务,建议在业务层依赖MQ,保证最终数据一致性;
不建议、不支持多表查询,所有多表查询sql,务必全部打散为单条sql逐条执行;
sql语句的第一个参数务必是shard key;
shard key必须是整数类型;
相关推荐
Shark 分布式mysql分库分表中间件,sharding领域的一站式解决方案。具备丰富、灵活的路由算法支持,能够方便DBA实现库的水平扩容和降低数据迁移成本。shark采用应用集成架构,放弃通用性,只为换取更好的执行性能与...
Spring MVC、MyBatis和MySQL是常见的Web开发框架与数据库系统,而ShardingJDBC则是阿里巴巴开源的一款分布式数据库中间件,用于实现数据库的分库分表。本项目结合了这些技术,旨在提供一种高效且可扩展的解决方案。 ...
本文将深入探讨基于Node.js实现的MySQL分表分库中间件,它在分布式集群环境中起到至关重要的作用。 首先,Node.js是一种流行的JavaScript运行环境,它允许开发人员使用JavaScript进行服务器端编程。Node.js的异步非...
**MySQL分库分表技术** 随着互联网业务的快速发展,数据量呈现爆炸性增长,单个数据库的性能瓶颈问题日益突出。在这种背景下,MySQL的分库分表技术应运而生,旨在解决高并发、大数据量场景下的性能挑战。本篇将深入...
总的来说,“Sharding + Mybatis-Plus 分库分表”是一种有效的解决大数据量场景下的数据库扩展策略,它通过Java的中间件技术,实现了数据库层面的水平扩展,结合Mybatis-Plus的便利性,降低了开发复杂度,提升了系统...
`mysql-sharding-jdbc` 是一个用于 MySQL 数据库分片的 Java 框架,它提供了 JDBC 驱动接口,使得开发者可以方便地在应用层进行分库分表操作。 一、MySQL 分库分表原理 1. 分库:将一个大型数据库拆分为多个小型...
在IT行业中,数据库扩展是解决高并发、大数据量场景下的重要策略之一,"sharding分库分表"就是其中一种常见的方法。本示例通过整合一系列技术,包括SpringBoot、ShardingSphere、Swagger和MyBatis-Plus,来演示如何...
### 当当开源Sharding-JDBC:轻量级数据库分库分表中间件 #### 概述 当当网近期开源了一款名为Sharding-JDBC的轻量级数据库分库分表中间件。作为一款高性能、易用性高的数据库水平分片框架,Sharding-JDBC在设计上...
在本项目“MySQL分库分表-springboot-sharding”中,开发者使用了Spring Boot框架结合ShardingSphere来实现这一功能。ShardingSphere是一个开源的数据库中间件集合,它提供了数据分片、分布式事务和数据库治理等功能...
Sharding-Proxy则是一个独立的数据库服务,对外提供与原生数据库兼容的TCP协议服务,支持MySQL、PostgreSQL等,使得应用无需修改代码即可使用分库分表功能。 分库分表的设计和实施需要考虑诸多因素,如数据一致性、...
本篇文章将对各种MySQL中间件进行总结,重点关注如何使用ShardingSphere进行分库分表以及相关的配置。首先,我们需要引入必要的依赖库,包括MySQL的JDBC驱动、ShardingSphere的Spring Boot Starter、阿里巴巴的Druid...
在这个主题中,我们将深入探讨分布式MySQL数据库中间件的核心特性,包括分库分表、读写分离、结果集合并以及故障自动切换。 1. 分库分表:这是解决单库性能瓶颈的关键策略。水平拆分(Sharding)是指将数据按照一定...
1. **MyCat**:开源的MySQL分库分表中间件,支持自动路由、分布式事务等。 2. **ShardingSphere**:Apache孵化器项目,提供分库分表、读写分离等功能,兼容多种数据库。 3. **OceanBase**:阿里巴巴开源的分布式...
Sharding-JDBC是阿里巴巴开源的一款轻量级的数据库中间件,它允许开发者在不改变任何数据库语句的情况下,实现分库分表的功能,从而提高系统的读写性能。MyBatis作为流行的持久层框架,与Sharding-JDBC的结合可以...
在分库分表场景中,MySQL 作为底层数据库,提供数据存储和事务处理能力。它支持InnoDB存储引擎,具备ACID特性,适合对数据一致性有高要求的应用。 ### 3. Sharding-Proxy 的作用 Sharding-Proxy 是一个数据库...
2. 并发事务:分库分表后,跨库跨表的事务处理变得复杂,可能需要引入分布式事务解决方案,如两阶段提交、补偿型事务等。 3. 联合查询:由于数据分布在不同库表,联表查询需要额外的中间件支持,如ShardingSphere、...
Apache ShardingSphere,作为一款开源的分布式数据库中间件,提供了完善的分库分表解决方案,帮助开发者解决这一问题。本资料包将详细介绍如何利用ShardingSphere在MySQL3库上对3个表进行分库分表。 一、...
本篇文章将详细讲解如何使用Spring Boot结合Sharding-JDBC和Mybatis-Plus实现分库分表功能。 一、Sharding-JDBC简介 Sharding-JDBC是由Apache ShardingSphere项目提供的一个轻量级数据库中间件,它作为JDBC驱动...
为了应对这些挑战,分库分表、读写分离、分布式主键、柔性事务以及数据治理等技术应运而生,而Sharding-JDBC正是这样一个集上述功能于一体的轻量级数据库中间件解决方案。 Sharding-JDBC是由当当网开源的一个分布式...
Sharding-JDBC是由阿里巴巴开源的轻量级Java框架,它定位为数据库中间件,提供了一种无需修改现有应用代码就能实现数据库分库分表的能力。Sharding-JDBC完全基于JDBC标准,可以理解为一个增强版的数据库驱动,它工作...