读书人

[] 经过ibatis实现轻量级的水平切分(已

发布时间: 2012-08-22 09:50:35 作者: rapoo

[] 通过ibatis实现轻量级的水平切分(已更新,ibatis原生api也可以实现sharding)
最近想在自己的项目里实现db sharding功能,正好前段时间研究过ibatis的源码于是就在ibatis的基础上进行了一些修改。另一方面也是为了练练手。这个sharding的实现主要是基于我项目中的需求实现的可能有很多考虑不周的地方,希望各位大牛拍砖。如果有人感兴趣愿意一起来发展这个项目,本人也非常欢迎各位的加入。
shardbatis是在mybatis 2.3.5代码的基础上进行一些扩展实现数据水平切分功能。 数据的水平切分包括多数据库的切分和多表的数据切分。目前shardbatis已经实现了单数据库的数据多表水平切分
mybatis2.3.5的核心类图(包含了spring对ibatis的封装sqlmapclienttemplate)如下(其他版本的ibatis的类图有略微不同)

改造后的类图

从这两张图上可以看出shardbatis里新增了接口sqlmapshardingext,sqlmapshardingext中具体的方法如下


这里再通过实例简单介绍一下使用defaultshardingstrategy时对sql的convert结果
比如sqlmap中定义的原始sql为:

实现自己的sharding策略,只要实现一个简单的接口即可

下面开始编码
select count(*) from app_test_0 where cnt=?

关于shardbatis在spring中的使用方法,以及一些使用注意事项和性能测试结果请大家移步到项目主页http://code.google.com/p/shardbatis/上查看

读书人网 >软件架构设计

热点推荐