当前位置: 首页 > news >正文

上海金融网站制作网站制作公司好关键词排名查询网站

上海金融网站制作网站制作公司好,关键词排名查询网站,用dw做旅游的网站的设计,手机应用市场下载为什么要sql解析重写? 如果我们的系统数据库实现了分表,那么我们的sql中表名需要根据参数动态确定,那么代码怎么写? 方案1: 自己手动拼接, 比如 update t_user_${suffix} , ${suffix} 作为一个变量传递…

为什么要sql解析重写?

如果我们的系统数据库实现了分表,那么我们的sql中表名需要根据参数动态确定,那么代码怎么写?

方案1: 自己手动拼接, 比如 update  t_user_${suffix} , ${suffix}  作为一个变量传递进来,这么变量怎么设置,自己可以通过硬编码,高级一点的写法就是可以用拦截器(AOP)统一设置。

方案2:   更高级一点的方案就是sql重写,代码中的sql就和没分表一样,直接写,框架层面做拦截,进行sql解析重写。 

shardingsphere SQL解析重写原理:

任何一门计算机语言在编译或者解释阶段,为了让机器能够识别, 都需要将代码做结构化处理,最常见的就是完全结构化生成AST(抽象语法树Abstract Syntax Tree) 。 

shardingsphere  AST 解析:

提取关键信息token化:

shardingsphere 分表sql重写只需要重写表名 ,所以 token化的时候,只token化了表名部分,并且记录了 tableName 在原始sql 的开始位置startIndex 和结束位置 stopIndex 

sql重写:

根据上一步token化的结果,就知道了表名在sql语句的开始和结束位置了,那么直接进行表名替换,sql 字符串拼接就行了。

真实表名直接根据配置规则计算出来就行了,具体算法见:

shardingsphere分库分表项目实践3-分库分表算法原理-CSDN博客

思考:

编程语言改写标准流程是: 

源语言--------》AST -------》替换AST的节点(要修改的部分)  -------》 遍历AST再次生成源语言

这个标准流程好处是功能强大能对任意部分修改,甚至将一种计算机语言翻译成另外一种,缺点就是代价大(计算量大、耗时)。

shardingsphere 只是结构化AST后对表名部分(自己感兴趣的)进行了字符串替换,这么做相比AST再逆向生sql 成性能更好,因为shardingsphere 分表场景比较特殊, 只需要对表名修改。

注意事项:

分库分表解决了单表单独库数据量大的问题,但因为需要做sql解析和重写,由于sql语句的复杂性,第三方分表分库组件都没办法对复杂sql 100% 支持,所以如果用了分表分库和第三方分表分库组件,那么sql语句就需要标准简单,否则会有sql无法解析兼容问题。

shardingsphere不支持的sql官方清单 :  

SQL :: ShardingSphere

http://www.ds6.com.cn/news/18436.html

相关文章:

  • 杭州做网站软件seo实战培训费用
  • 做网站 用什么做数据库最好网店关键词怎么优化
  • 陕西 网站建设搜索排名优化软件
  • 个人婚礼网站设计今日最新头条新闻条
  • 利辛网站建设软件外包企业排名
  • 做营销网站那个好北京软件培训机构前十名
  • 网站开发学徒工作如何搜索推广代运营
  • 石家庄推广网站重庆seo搜索引擎优化优与略
  • 杭州做网站哪里好上海搜索引擎推广公司
  • b2c的电子商务的网站建设如何制作付费视频网站
  • 做存储各种环境信息的网站培训机构如何招生营销
  • 网站搭建流程图建设网站的步骤
  • 移动网站cms站长统计推荐
  • 学校如何建设网站首页宁波seo公司哪家好
  • 商务网站管理与建设引流软件下载站
  • 网站建设广告宣传素材企业官网定制设计
  • 西安单位网站制作河源seo
  • 做网站沧州我要下载百度
  • 企业做网站哪家便宜西安百度搜索排名
  • asp 做网站短期培训学什么好
  • wordpress站内链接一级域名二级域名三级域名的区别
  • 网页设计网站怎么做特效网络营销推广培训机构
  • crm管理系统介绍鹤壁seo公司
  • 能自己在家做网站吗创建网站需要多少资金
  • 建设工程j教育网站seo排名赚挂机
  • 外贸b2c网站建设公司淄博网站seo
  • 网站流程图百度云盘搜索
  • 网站开发 上海安卓手机优化
  • 南京市住房城乡建设委官方网站产品宣传方案
  • 网站开发一定要学java吗产品线上推广方案