目 录
val sql = "select {sgip_mt_log.*} from sgip_mt_log_200610 {sgip_mt_log} where {sgip_mt_log}.MTID=1";
query=session.createSQLQuery(sql).addEntity("sgip_mt_log",classOf[MTMsg]);
可以拦截普通的新增、更改、删除、以及Hql。
import org.hibernate.EmptyInterceptor
class TestInterceptor extends EmptyInterceptor {
override def onPrepareStatement(sql: String): String = {
//这里可以根据当前时间或者外部条件,更改sql中的表名
sql
}
}
configuration.setInterceptor(new TestInterceptor)
但是无法拿到参数,因此不能根据参数进行判断.这种方式也不是和好办法。
该项目是在对 Google 财务系统数据 Sharding 过程中诞生的。
优点:
缺点:
参考:
Guzz 是一种用来进行快速开发和高性能网站设计的框架,用于替代或者补充hibernate或ibatis的持久化实现,并提供更多的大型系统架构设计 支持。guzz的目标是使得大型化网站设计更加简单,团队分工更加明确,框架在使用时更少出问题。主要设计理念:
Cobar Client是一个轻量级分布式数据访问层(DAL)基于iBatis(已更名为MyBatis)和Spring框架实现。
主要特性:
Tddl是淘宝的开源产品。整个产品包括对应用透明的分库分表层和具有众多特性的动态数据源。目前仅先开源动态数据源,尚未开源分库分表层部分。
动态数据源的主要特性有:
DbShards是目前国际领先的数据拆分技术。该技术通过数据拆分解决数据库横向扩容的难题,将原来集中存储的数据根据一定的规则分布到不同的物理数据 库服务器上,从而实现数据服务器更快的查询、更多的处理、更高的可靠。使用dbSharads这一性价比极高的技术,您无需再通过提高DB服务器的配置、 增加DB服务器来提高硬件速度的纵向扩容方法来解决访问压力。
Kingshard 是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。 主要功能:
Spock Proxy是由实际项目产生的一个开源项目(Spock是Rails的应用,Speck Proxy应当可用于Rails之外的,例如PHP或.NET),基于MySQL Proxy开发,是MySQL Proxy的一个分支,支持range-based horizontal paritioning,他对MySQL Proxy所做的改进包括:
a). 不使用LUA脚本,提升性能。例如将多个数据源返回的结果集合并期间还要与LUA脚本交互,这样的性能开销比较大 b). 客户端登录验证。MySQL Proxy支持客户端与各个服务器直接进行登录验证,Spock Proxy则将其统一管理,分离客户端与服务器的连接 c). 动态连接池。受益于客户端登录认证机制的改善
PL/Proxy则是针对 PostgreSQL 的,设计思想类似 Teradata 的 Hash 机制,数据存储对客户端是透明的,客户请求发送到 PL/Proxy 后,由这里分布式存储过程调用,统一分发。 PL/Proxy 的设计初衷就是在这一层充当”数据总线”的职责,所以,当数据吞吐量支撑不住的时候,只需要增加更多的 PL/Proxy 服务器即可。大名鼎鼎的 Skype 用的就是 PL/Proxy 的解决方案。