# dearbaby **Repository Path**: hry8310/dearbaby ## Basic Information - **Project Name**: dearbaby - **Description**: 数据库跨库连接查询工具 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-02-21 - **Last Updated**: 2023-02-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 为什么叫 dearbaby:

dearbaby 的取名主要有两个方面,

dearbaby 是什么:

dearbaby 这是跨数据库一个 select 查询语句连接器。 通过该工具可以将连接查询分割成多个单表查询,再将单表结果集进行连接, 即将数据库的连接功能上移到工具执行。主要用于解决分布式数据库跨库查询的处理.它有哪些特点:

它的原理是:
在分库的环境下, TAB1、TAB2 的数据分布在多个节点下,如执行:select A.a,B.b from TAB1 A, TAB2 B whre A.id=b.id。 是不能将这个语句直接放在数据库运行的 而需要将TAB1与TAB2的记录集分别查询,再在应用中将这两个表的记录集进行等值连接。dearbaby 就是实现这个功能的。他将 select A.a,B.b from TAB1 A, TAB2 B whre A.id=b.id 分拆成 select A.a,A.id from TAB1 A 与 select B.b,B.id from TAB1 B。再 分别执行这两个语句。得到TAB1与TAB2的查询结果,最后将两个结果集按 A.id=b.id 的条件连接。dearbaby 就是以API的方式提供该功能, 解决应用中的需求



支持那些语法:
  • 支持多表间的全连接、左右连接,支持=、>=、<=、<>,null等逻辑运算。支持in,not in,like,not like子查询(like 只支持 _ % 匹配)。
  • 支持max\sum\min\count 聚合函数,支持group by 分组。由于order by 很耗内存,建议不要使用
  • 支持from 、jion、字段等部分包含子查询,支持嵌套子查询,支持关联的子查询,但目前测试并不全面


  • 有哪些限制:
  • 不支持带 * 的sql语句。如: select * from a , select count(*) from a 等都不支持
  • sql中的表都必须加上别名。如 select aid,bname from taba,tablb where aid=bid 必须改为 select a.aid , b.bname from taba a,tablb b where a.aid=b.bid
  • like的使用有限制,支持 _ % 匹配
  • 不支持exist,而由于order by 会比较占用内存,将也不再支持


  • 做了那些优化(详情可见 《优化过程分享》):