玖叶教程网

前端编程开发入门

sqltoy-orm-4.18.0发版,用创新侵蚀老美软实力

开源地址:

  • github: https://github.com/chenrenfei/sagacity-sqltoy
  • gitee: https://gitee.com/sagacity/sagacity-sqltoy

更新内容

1、完善了es不同sql插件的支持
2、优化vo中含map时传参,兼容key大小写
3、优化后台日志提示

如何看待sqltoy-orm,记录一次面试模拟

1、sqltoy经历2020年极速发展和较多用户的使用参与,已经得到了极大的完善,

常规数据库发现问题也不是一件容易的事情,已经不会成为大家选择的阻力。

2、使用sqltoy最大的问题在于受众较小,没有mybatis主流,大家担心影响自身未来的择业


这里我给大家演绎一次:

面试官:

你能介绍一下mybatis(plus)的基本特性、分页处理、为什么调用接口就可以实现具体功能?

以及为什么不实用jpa而选择mybatis吗?

面试者:

不好意思,mybatis以前用过,大体原理知道一些但已经忘记不少,未必能答的准确。目前我们用sqltoy-orm,

是一个国人写的开源框架,要比mybatis好用些。

面试官:

哦,没有听说过sqltoy,那你说说sqltoy优点是什么?(面试官提高调门进行深挖反问,目带质疑mybatis都不会还来面试)

面试者:

好的,sqltoy的优势是结合了jpa的对象操作简洁性和sql查询的灵活性

  • 在对象操作层面:

除了jpa的增删改、load功能外,针对应用场景强化了update和saveOrUpdate、补充了updateFetch功能,update可以灵活控制属性是否强制更新,

saveOrUpdate则结合数据库自身特性比如oracle、sqlserver用merge into等。

updateFetch则针对强事务性场景提供一次交互完成查询、锁记录、修改、并返回修改后的结果。

因此sqltoy的对象操作并不弱于jpa,且有自身特点,切合项目实践。

  • 在查询层面优势非常明显,随着业务的发展,增删改不再是痛点,查询会成为阻碍项目的关键

1、sqltoy起源在于sql语句的编写,强调sql的直观性、可维护性,比如可以在dbeaver上调试完稍微做点调整就可以放入代码中,

如果业务变化也非常方便从代码中copy到dbeaver进行调试,这个就是mybatis和jooq这些框架无法做到的。

2、sqltoy极为重视性能:

提供了缓存翻译极大的减少表关联查询,让sql变得简洁的同时几何级的提升了查询性能。

sqltoy在分页优化层面是最高级别的,这里问一下您,常规的分页优化有几种策略?


面试官:

优化count语句,剔除order by等,或者自行定义count语句

面试者:

嗯,这是一个方面,还有呢?

面试官:

还有?优化索引,用es

面试者:

说的没错,但优化索引和引入其他技术是一些基本解决方式,而sqltoy则针对这些措施用尽后提供另类的解决策略

1、常规的count语句优化,减少select中间的不必要的函数和order by对性能的干扰。

2、sqltoy提供快速分页,多表关联时,对决定数据范围的条件查询先分页,取出单页数据再关联,实现性能的大幅提升。

3、sqltoy提供分页优化,利用缓存在一定周期范围内相同条件避免执行count查询,让分页2次查询变成1次查询。

4、sqltoy提供了并行查询机制,可以同时执行count和取记录查询,让原本顺序执行耗时10秒(各5秒),变成6秒。

您说sqltoy的分页是不是比mybatis更加可取?

面试官:

是的,这个策略确实比较新奇,刚才你说的缓存翻译你再说说为什么能简化sql并大幅提升性?(面试官不再高傲了)

面试者:

好的,我们假设查询订单表,我们需要展示客户名称、商品名称、业务员姓名、业务员所在部门、订单状态这些信息,

往常用mybatis我们需要关联客户表、商品表、员工表、机构表、数据字典表(状态),一个sql查询关联了5、6张表,sql极为庞大,查询性能也极低。

而sqltoy则将客户表、商品、员工、机构、数据字典放入缓存中,订单查询只需要查询订单表,然后通过编码跟缓存对应取得名称

您说缓存是内存,单表查询再通过内存取得名称这种不比5、6张表查询快?sql不更加清爽简洁?

面试官:

嗯,是的,有道理,看来sqltoy确实还不错(心里想值得研究研究,就算不用也不能被用sqltoy的人搞得不知所措)

但sqltoy不知名呀,可能就是这些优势,这种选择存在较大风险


面试者:

sqltoy真正用起来你就会发现,其实不只是这些优势,还有非常多的特点:

1、支持常规的数据库的同时支持mongo、es、clickhouse,这些都是针对不同场景进行针对性的延伸,便于在超大数据场景下提供支撑

2、sqltoy支持分库分表

3、sqltoy对统计分析非常友好,提供了数据旋转、同比环比、分组计算等靠写sql极为复杂的简化策略。

4、sqltoy最跨数据库,提供了函数适配,比如instr,不同数据库语法不一样,sqltoy则可以自行替换,让一个sql适用于多种数据库环境,有利于项目的产品化

关于不知名和风险确实是一个问题,但sqltoy确实有助于项目解决问题,任何事物都有发展的过程,sqltoy重点在于其设计思路和方向是正确的

创新就需要有承担风险的勇气,在中美竞争的大环境下,逐步支持国产不断侵蚀美国的软实力,试想从orm再逐步延伸到数据库,

如果国产产品也跟美国产品一样深入人心,延伸到更多领域,不也算是一份贡献吗?没有开始如何能发展壮大!


在旁听的公司高级领导

不错,有见地,有创新意识、有情怀,我们欢迎您加入我们公司,你什么时候可以入职?

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言