Shark简介
前身为Kratos,轻量级Mysql分库分表(Sharding)中间件,丰富的Sharding算法支持(2类4种分片算法),能够方便DBA实现库的水平扩容和降低数据迁移成本。Shark站在巨人的肩膀上(SpringJdbc、Druid),采用与应用集成架构,放弃通用性,只为换取更好的执行性能与降低分布式环境下外围系统的宕机风险。
Shark的优点
- 动态数据源的无缝切换;
- master/slave一主一从读写分离;
- Sql独立配置,与逻辑代码解耦;
- 单线程读重试(取决于的数据库连接池是否支持);
- 单独且友好支持Mysql数据库;
- 非Proxy架构,与应用集成,应用直连数据库,降低外围系统依赖所带来的宕机风险;
- 使用简单,侵入性低,站在巨人的肩膀上,依赖于SpringJdbc、Druid;
- 基于淘宝Druid的SqlParser完成Sql解析任务,解析性能高效、稳定;
- 分库分表路由算法支持2类4种分片模式,库内分片/一库一片;
- 提供自动生成全局唯一的sequenceId的API支持;
- 提供自动生成配置文件的支持,降低配置出错率;
- 提供内置验证页面,方便开发、测试以及运维对执行后的sql进行验证;
- 专注于Sharding领域,无需兼容通用性,因此核心代码量少、易读易维护;
Shark的分片模型
Shark支持2类4种分片算法:
- 库内分片类型:
- 片名连续的库内分片算法;
- 非片名连续的库内分片算法;
- 一库一片类型:
- 片名连续的一库一片算法;
- 非片名连续的一库一片算法;
Shark的使用注意事项
- 不支持强一致性的分布式事务,建议在业务层采用依赖MQ、异步操作等方式实现事物,保证事物的最终一致性;
- 不建议、不支持多表查询,所有多表查询sql,务必全部打散为单条sql逐条执行;
- sql语句的第一个参数务必是路由条件;
- 不支持sql语句中出现数据库别名;
- 路由条件必须是整数类型;
相关推荐
为了应对这些挑战,分库分表、读写分离、分布式主键、柔性事务以及数据治理等技术应运而生,而Sharding-JDBC正是这样一个集上述功能于一体的轻量级数据库中间件解决方案。 Sharding-JDBC是由当当网开源的一个分布式...
### 当当开源Sharding-JDBC:轻量级数据库分库分表中间件 #### 概述 当当网近期开源了一款名为Sharding-JDBC的轻量级数据库分库分表中间件。作为一款高性能、易用性高的数据库水平分片框架,Sharding-JDBC在设计上...
分布式数据库-MySQL Sharding1 分布式数据库-MySQL Sharding1 是一种将单个数据库拆分成多个数据库节点的技术,目的是为了解决单个数据库的性能瓶颈和存储空间限制。这种技术可以将数据分布到多个数据库节点上,以...
Java语言在大数据处理和分布式系统中的应用越来越广泛,特别是在数据库扩展方面,轻量级的分库分表中间件起到了至关重要的作用。本文将详细介绍一款基于Java编写的分库分表中间件,它提供了丰富的Sharding算法,以...
Shark 分布式mysql分库分表中间件,sharding领域的一站式解决方案。具备丰富、灵活的路由算法支持,能够方便DBA实现库的水平扩容和降低数据迁移成本。shark采用应用集成架构,放弃通用性,只为换取更好的执行性能与...
开源个人参考淘宝的TDDL分库分表思路写的一个分库分表中间件Kamike.divide. 分库分表这个是8月份左右跟淘宝的数据分析部门的架构师离哲交流的时候产生的想法,离哲推荐采用TDDL进行分库分表。 回去一看,却...
Sharding-JDBC是阿里巴巴开源的轻量级Java框架,它可以在不修改现有数据库的情况下,对数据库进行水平扩展,实现数据的分布式存储。这里的"实例完整源码"意味着提供了实际操作的代码示例,可以帮助读者更好地理解和...
Sharding-Proxy 是一个数据库中间件,它扮演着数据库代理的角色,位于应用程序与真实数据库之间。其主要功能是实现数据分片逻辑,使得应用程序无需感知复杂的分片规则,即可透明地访问分片后的数据库。Sharding-...
sharding-jdbc作为一个轻量级的Java框架,可以在不改变原有业务代码和数据库结构的前提下,通过在JDBC层提供透明化的数据分片能力。其主要功能包括: 1. **分库分表**:根据预定义的规则(如哈希取模、范围分片等)...
MyBatis-Sharding 是一种基于 MyBatis 的轻量级分库分表解决方案,它可以帮助开发者有效地解决亿级数据量下的 MySQL 存储问题。下面将详细介绍 MyBatis-Sharding 的核心概念、实现原理以及如何在实际项目中进行应用...
MySQL Sharding,通常被称为“碎片”,是一种数据库分片技术,旨在应对大数据量带来的性能挑战。随着数据的增长,单个数据库服务器的压力会显著增加,影响读写速度,甚至可能导致系统崩溃。Sharding通过将数据分布到...
在IT行业中,数据库扩展是解决高并发、大数据量场景下的重要策略,而“分库分表”正是其中的关键技术之一。本篇文章将对各种MySQL中间件进行总结,重点关注如何使用ShardingSphere进行分库分表以及相关的配置。首先...
分表分库(Sharding)是解决大数据量和高并发问题的一种常见策略。通过将单一的大表拆分为多个小表,分散到不同的数据库服务器上,可以显著提升查询效率,降低单个节点的压力,提高系统的整体性能和可用性。在Node....
SDCC秉承干货实料的原则,旨在为技术人提供高品质的交流平台。在新的2017年春天,SDCC 2017之线上互联网应用架构峰会再次启航,将于2017年3月25日隆重开启,邀请了百度、微博、58同城、当当网、美团点评等一线互联网...
它提供了一种轻量级的解决方案,无需额外的服务器或代理,只需在代码层面添加配置即可实现数据的分片和路由。在本项目中,ShardingJDBC帮助我们将单一数据库横向扩展为多个数据库实例,从而提高系统的吞吐量和响应...
Sharding-JDBC 是 Apache ShardingSphere 项目的一部分,它作为轻量级 Java 框架,无需额外中间件即可接入,主要通过拦截 JDBC 的 SQL 执行流程,实现分库分表的功能。其特点包括: 1. 透明化:对应用程序来说,...
Sharding-JDBC是Apache ShardingSphere项目的一部分,它是一个开源的、轻量级的Java框架,能够在现有的Java应用中无缝集成,实现数据库的分布式处理。作为数据库中间件,它的主要目标是解决单个数据库在高并发场景下...
ShardingJDBC是阿里巴巴开源的一个轻量级Java框架,用于实现数据库分片。2.0.3版本的主要特性包括: 1. 数据库透明分片:应用程序无需感知分片规则,可以像操作单个数据库一样操作分布式数据库。 2. 支持SQL语句的...
Sharding JDBC作为一个轻量级的中间件,它以jar包的形式集成到应用中,作为增强版的JDBC驱动,使得应用无需感知分库分表的存在,即可透明地进行数据库操作。其核心功能包括数据分片和读写分离,通过提供数据源配置、...
Sharding-JDBC是阿里巴巴开源的一款轻量级的数据库中间件,它允许开发者在不改变任何数据库语句的情况下,实现分库分表的功能,从而提高系统的读写性能。MyBatis作为流行的持久层框架,与Sharding-JDBC的结合可以...