Spring + iBatis 的多库横向切分简易解决思路
I. 向Cobar Client迁移
1. Cobar Client使用迁移手册(Cobar Client Migration Guide) 1.1. 数据分区多数据源的依赖管理说明
1.2. CobarSqlMapClientTemplate其它相关配置说明 1.2.1. 数据访问路由相关配置 1.2.2. What's Next?
II. Cobar Client百科大全 2. CobarClient发起的背景 3. CobarClient最初需求
4. CobarClient方案之间的权衡 4.1. JDBC API层次的解决方案 4.2. DAL层次的解决方案
4.3. 特定国际站场景的解决方案
5. Cobar Client参考文档(Cobar Client Reference Documentation) 5.1. 鸟瞰Cobar Client现有架构实现 5.2. CobarSqlMapClientTemplate详解
5.2.1. 多数据源依赖管理(Multiple DataSources Management)
5.2.2. 数据访问请求路由(Routing In CobarSqlMapClientTemplate) 5.2.3. SqlAuditing
5.2.4. 其它配置与特性解释(Other Configuration or Features Explained) 5.3. MultipleDataSourcesTransactionManager详解
5.3.1. MultipleDataSourcesTransactionManager依赖的多数据源管理 6. CobarClient展望
Part I. 向Cobar Client迁移
Chapter 1. Cobar Client使用迁移手册(Cobar Client Migration Guide) 1.1. 数据分区多数据源的依赖管理说明
1.2. CobarSqlMapClientTemplate其它相关配置说明 1.2.1. 数据访问路由相关配置 1.2.2. What's Next?
CobarClient主要针对现有网站应用中使用iBatis做数据访问层这一情况而设计开发,如果你的应用程序最初使用了Spring提供的SqlMapClientTemplate的话, 那迁移到CobarClient实际上仅仅是稍微改一下应用程序的配置而已.
假设原有的应用程序依赖于Spring的SqlMapClientTemplate进行数据访问, 那么, 使用Cobar Client之后, 只要修改配置, 让应用程序依赖于CobarClient的
CobarSqlMapClientTemplate即可. 同时, 与数据访问相关的事务管理也需要从使用Spring原生的DataSourceTransactionManager, 换为CobarClient提供的
MultipleDataSourcesTransactionManager, 整个迁移的概况类似于:
使用CobarClient之前:
class=\ class=\ 使用CobarClient之后: class=\ class=\ ... 不过, 以上只是简化后的迁移场景, 实际上, 还有一些细节需要我们完善之后, 才能完全的完成整个的迁移工作. 1.1. 数据分区多数据源的依赖管理说明 在单数据源的情况下, SqlMapClientTemplate(或者说它依赖的SqlMapClient)以及对应进行事务管理的 DataSourceTransactionManager都会引用同一个数据源; 而当应用进行数据拆分之后, 物理上将对应多个数据源, 要进行数据访问和事务管理, 我们现在必须针对数据拆分之后对应的多个数据源进行.为了同一的管理这种依赖, CobarClient提供了 ICobarDataSourceService这一抽象接口用于归类管理数据拆分后对应的多个数据源, com.alibaba.cobar.client.CobarSqlMapClientTemplate和 com.alibaba.cobar.client.transaction.MultipleDataSourcesTransactionManager 现在将都依赖于某个ICobarDataSourceService的实现来提供对某些数据源的依赖, 这样, 最初的配置将演化为如下的形式: class=\ CobarSqlMapClientTemplate都有一个cobarDataSourceService 依赖, 该依赖都将引用同一个bean定义dataSources (注意这里的名称为复数). 该bean定义将对应某个ICobarDataSourceService实现类, 当前, 我们提供了 com.alibaba.cobar.client.datasources.DefaultCobarDataSourceService作为ICobarDataSourceService的默认实现, 其常见配置如下: class=\ class=\ value=\ value=\/> value=\