{{ it.name }}
{{ it.text }}
随着使用时间的增加业务的不断发展,我们数据库中的表会越来越多表中的数据量也会越来越大。这时候我们我们怎样升级硬件数据库的数据处理能力都将遭遇瓶颈,这时候软件系统变慢变得无可避免,解决这一问题一个很有效的方法就是使用数据库中间件,今天我们一块看下这种中间件都可以从那几个层次切入。
1.代码层
在同一个项目中创建多个数据源采用if else的方式直接根据条件在代码中路由。Spring中有动态切换数据源的抽象类如果项目不是很庞大使用这种方式能够快速的进行分库但缺点也是显而易见的这种海量的代码侵入是绝不能被接受的。这种方式了解一下即可一般不会去使用。
2.框架层
主要是修改或增强现有ORM框架的功能在SQL中增加一些自定义原语或者hint来实现。常见的比如实现一些拦截器增加一些自定义解析来控制数据的流向效果较好。但是这种只适合公司ORM框架统一的情况其他很多情况很难实现。而且大部分情况下要修改框架源码因此也不推荐。
3.驱动层
从驱动层开始我们可以理解为一个smart-client,通常是在连接池或者driver的基础上进行了一层封装内部可以与不同的数据库建立连接。服务需要查询的sql就交给smart-client进行解析优化然后发送给具体的数据库进行操作。
小编在这里推荐在驱动层使用数据库中间件,因为这个比较容易实现并且不会出现业务入侵,另外smart-client不需要实现客户端通信协议只需要在数据数据库厂商提供的不同语言的数据库驱动上做封装即可。并且还有一个的特点就是天然去中心化。