开源个人参考淘宝的TDDL分库分表思路写的一个分库分表中间件Kamike.divide.
分库分表这个是8月份左右跟淘宝的数据分析部门的架构师离哲交流的时候产生的想法,离哲推荐采用TDDL进行分库分表。
回去一看,却发现TDDL只开源了一半,开源的那一半基本没法使用,所以只能自己写一个Sharding了。
前几天发布了kamike.db>这个ORM中间件,这几天就把我之前写的分库分表功能裁剪一下,然后基于kamike.db进行重构。
现在发布一个基本算法实现完毕的版本,模拟了jdbc的操作过程,实现分库分表。具体使用例子我还没写完,先发布代码,大家有兴趣可以参考。
以后这个玩意会持续改进。
首先说明,UDP大文件传输工具库的Kamike.fast已经可以传输完整文件 花费了10天的所有业余时间,去调这个不到1000行代码。。 重写的不下十遍。。终于能穿越nat传输完整的文件,而且能自动重传丢失报文了。 现在更新一下源代码。在github上面。 目前还有一点小bug和断点续传的前序握手,还要调整。 --------------------------------------------
现在过年在家里打扫卫生,顺便清理重构下代码,开源个人参考淘宝的TDDL分库分表思路写的一个分库分表中间件Kamike.divide. 分库分表这个是8月份左右跟淘宝的数据分析部门的架构师离哲交流的时候产生的想法,离哲推荐采用TDDL进行分库分表。 回去一看,却发现TDDL只开源了一半,开源的那一半基本没法使用,所以只能自己写一个Sharding了。 前几天发布了kamike.db这个ORM中间件,
删除了很多对其他包的引用,现在应该是最小可用的版本了。 索性opensource,LGPL协议,欢迎大家试用。这玩意最大的优点,就是只是一个工具,而不是框架,所以与标准的JDBC和preparedstatement结合的很顺畅,能大幅度降低jdbc写法的工作量, 不过个人还是建议,写入用orm,读取在合适的时候稍微用一下绑定数据的DTO的代码,所以提供了GenericSelect类和Generic
下一个开源项目Kamike.fast的框架已经搭好,计划用一到两天时间开发完毕。 采用UDP协议,在跨大洲之间进行完整的大文件(超过2GB)传输。 之前在项目里面一直用aspera的软件,aspera也就是速珀,作为一个软件,最近刚拿了艾美奖。但是拿奖之后,出名了,就被IBM收购了。 我担心IBM收购后,Aspera估计就没那么便宜了,所以准备根据自己使用Aspera的经验,写一个看看。作为Asp
大年初五,在单位24小时值班,重新捡起来kamike.divide中间件的编写,准备更新一下。 目前更新进度如下 加入orm支持。 加入自动创建元数据表功能 加入分库分表的crud的例子。 调整程序,让例子能顺利高效率的运行。 准备下一个开源中间件,实现基于java的udp传输中间件,搭建开发框架。实现完毕后,再考虑改成c版本。 ---------------------------------
经过5个小时左右的开发和整理工作。 个人认为Kamike.divide可以作为一个版本进行发布了。 主要因为完成了以下四个工作。 加入orm支持。 加入自动创建元数据表功能。 加入分库分表的crud的例子。 调整程序,让例子能顺利高效率的运行。 源代码: https://github.com/hubinix/kamike.divide 发布0.1版的下载链接如下: https://g
java.math.BigDecimal.divide(BigDecimal divisor, RoundingMode roundingMode) 返回一个BigDecimal,其值为(this/除数),其标度是this.scale()。如果必须执行舍入,以产生一个结果与给定的比例,将指定的舍入模式被应用。 声明 以下是java.math.BigDecimal.divide()方法的声明 pub
题目描述:Divide Tree As we all know that we can consider a tree as a graph. Now give you a tree with nodes having its weight. We define the weight of a tree is the sum of the weight of all nodes on it.
1.【洛谷P1908】 1.1 题目描述 输入格式: 第一行,一个数 n,表示序列中有 n个数。 第二行 nn 个数,表示给定的序列。序列中每个数字不超过 10^9。 输出格式: 输出序列中逆序对的数目。 输入样例: 6 5 4 2 6 3 1 输出样例: 11 1.2 暴力解法之冒泡排序 【关键步骤】在冒泡排序代码中,若交换则逆序对加1,就这么简单。 【时间复杂度】O(n^2),肯定超时!!!
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4301 题目描述: 给定一块2*n的巧克力,要求将该巧克力分成k份,问 一共有多少种分法,且每一小块(1*1)巧克力都被认为是不同的,将结果再模上100000007 这题关键就是找到Dp的状态表示,指定 dp1[i][j] : 表示前i列分成j份且第i列不分开 dp2[i][j] : 表示前i列分成
DIVIDE:安全除,解决被除数为0的情况(当被除数为0时,返回值为∞) 语法:DIVIDE(除数,被除数 [,替代值]) 当被除数为0时,返回 替代值,替代值部分可省略,省略不写时返回BLANK
java.math.BigDecimal.divide(BigDecimal divisor, int roundingMode) 返回一个BigDecimal,其值为(this/除数),其标度是this.scale()。如果必须执行舍入,以产生一个结果与给定的比例,将指定的舍入模式被应用。 声明 以下是java.math.BigDecimal.divide()方法的声明 public BigDe
ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar(计划中)这 3 款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。 架构 Sharding-JDBC 定位为轻量级 J
主要内容:1.ShardingSphere概念,2.功能列表,3.项目状态,4.分库分表_结果归并1.ShardingSphere概念 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由、和 这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务 和 数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。 Apache ShardingSphere 旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现
主要内容:1.数据库瓶颈,2.垂直切分,3.水平切分,4.数据分片规则,5.分库分表带来的问题1.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。 (并发量、吞吐量、崩溃)。 1.1 IO瓶颈 第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。 第二种:网络IO瓶颈,请求的数据太多,
该文档主要介绍Zebra分库分表ShardDataSource的接入和使用,主要包括分库分表的背景知识、ShardDataSource的配置、分库分表规则的配置等。 2 准备 2.1 背景介绍 在一个业务刚上线时,可能使用某个单表存储数据。随着时间的推移和用户的增加,单表内的数据量会不断变大,总有一天数据量会大到一个难以处理的地步。这时仅仅一张表的数据就可能过亿甚至更多,无论是查询还是修改,对于它
读写分离,主要是为了数据库读能力的水平扩展(参考:Zebra读写分离介绍) 一旦业务表中的数据量大了,从维护和性能角度来看,无论是任何的 CRUD 操作,对于数据库而言都是一件极其耗费资源的事情。即便设置了索引, 仍然无法掩盖因为数据量过大从而导致的数据库性能下降的事实 ,这个时候就该对数据库进行 水平分区 (sharding,即分库分表 ),将原本一张表维护的海量数据分配给 N 个子表进行存储和
本文介绍了 DM 提供的分库分表的合并迁移功能,此功能可用于将上游 MySQL/MariaDB 实例中结构相同/不同的表迁移到下游 TiDB 的同一个表中。DM 不仅支持迁移上游的 DML 数据,也支持协调迁移多个上游分表的 DDL 表结构变更。 简介 DM 支持对上游多个分表的数据合并迁移到 TiDB 的一个表中,在迁移过程中需要协调各个分表的 DDL,以及该 DDL 前后的 DML。针对用户的