sharding-core-preprocess

  • 模块结构
    sharding-core-preprocess的主要功能是对SQLStatment对象进行预处理生成SQLStatementContext对象,为路由提供必要信息。按功能分类可以分成三个部分:
  1. org.apache.shardingsphere.core.optimize。SQLStatementContextFactory类,主要作用根据传入的SQLStatement类型创建相应的SQLStatementContext对象。创建SelectSQLStatementContext、InsertSQLStatementContext、CommonSQLStatementContext三种。
  2. org.apache.shardingsphere.core.optimize.statement。包含SQLStatementContext接口和SelectSQLStatementContext、InsertSQLStatementContext、CommonSQLStatementContext三种实现类。存储:TablesContext、SQLStatement和其他类型Context。
  3. org.apache.shardingsphere.core.optimize.segment。内部分insert、select、table三种类型,包含segment对应的context。
  • 模块结构图
  • 主要逻辑流程和关键类分析
    sharding-core-preprocess的主要逻辑是从SQLStatementContextFactory.newInstance()方法开始的,主逻辑流程图如下。其中,虚线箭头表示从属关系,实线表示执行顺序。
  • 设计模式和设计原则
  1. 简单工厂模式
    SQLStatementContextFactory.newInstance()方法根据sqlStatement的类型来决定要创建SQLStatmentContext实例。SQLStatementContext是一个接口,它拥有SelectSQLStatementContext、InsertSQLStatementContext、CommonSQLStatementContext这三个实现类。