【OpenDDAL概述】

阅读更多

OpenDDAL SQL引擎把SQL类为4类

  1. 无数据表访问的SQL,如:select 1+1, select seq.nextval等,此类SQL直接于OpenDDAL SQL引擎直接处理。
  2. JoinFree SQL,SQL无需按表进行折分,通过路由规则计算的结果只一个结点上执行,OpenDDAL无需作任何的处理,直接发到db上执行。
  3. JoinFree SQL,SQL无需按表进行折分,通过路由规则计算的结果在多个结点上执行,分组查询需要改写SQL Select字段,OpenDDAL负责查询结果集的合并、排序、分组汇总操作。
  4. 跨库Join SQL


【OpenDDAL概述】_第1张图片
 

OpenDDAL的JDBC Statement的QueryTimeout处理过程

Statement queryTimeout用来限制statement的执行时长,单位为秒,timeout的值通过调用JDBC的java.sql.Statement.setQueryTimeout(int timeout) API进行设置。OpenDDAL完成一次statement执行可能会访问多个结节的数据,会创建多个数据处理的handler,HandlerHolderProxy的职责就是记录这些handler,方便session对运行的statement执行资源控制。

  1. 调用JdbcStatement.setQueryTimeout时,oppenddal设置session的queryTimeout
  2. 调用Statement的executeQuery()方法,oppenddal记录Statement执行的开始时间为now,结速时间为now + queryTimeout
  3. session处理数据将queryTimeout代理给物理的jdbc Statement,并检查是否处理时间超过Statement执行结速时间
  4. 达到超时时间
  5. session终止数据处理,调用所有处理数据所打开的底层Statement的cancel()方法取消执行
  6. session抛出query timeout异常
  7. 调用close方法,session关闭所有处理数据所打开的底层Statement

 

OpenDDAL功能优势

  • 水平分库分表,提供简洁的切分方式,多纬切分,自定义切分规则
  • 支持Embedded(JDBC)/Server(TCP/IP)两种运行模式
  • 兼容MySQL协议,支持大部分MySQL客户端
  • 支持结果集合排序,分组汇总,分页,还支持跨库join,子查询,union查询等复杂SQL
  • 支持DDL,可以一次性对表结构,索引进行维护。
  • 实现基于成本的分布式SQL优化器,为SQL提供可靠的执行方式
  • 支持SQL语句执行计划查询,方便的理解SQL的路由及执行
  • 实现了基于MySQL数据库的Repository层
  • 读写分离支持,HA支持,问题数据库隔离和自动恢复
  • 支持全局唯一序列,使用方式类似于Oracle,DB2中Sequence对象
  • 【OpenDDAL概述】_第2张图片
  • 大小: 75.2 KB
  • 查看图片附件

你可能感兴趣的:(OpenDDAL概述)