您现在的位置是:首页 > 文章详情

BeetlSQL 3.25.0 发布,单表多租户模式支持

日期:2023-08-28点击:107
  • 修复性能加速扩展包不支持 primitive 类型数据
  • 增强XML扩展包与SpringBoot框架集成能力
  • 增加单表多租户模式的支持,使用sql重写功能

BeetlSQL 支持多数据源,多表这俩种租户实现模式,也支持单表实现多租户模式,单表租户模式使用SQL重写扩展包来完成。

BeetlSQL最新扩展包

BeetlSQL扩展包 功能
sql-xml 高仿myabtis的xml语法,如果有想喜欢使用xml 写sql模板的,可以使用此扩展包
sql-accelerator 性能加速包,通过反射优化,缓存,让beetlsql性能提升50%-200%,接近一半手写JDBC的性能
sql-firewall sql防火墙,避免不小心写的sql破坏数据库
sql-dynamic-table 支持像访问静态表格那样防火动态表格,简化这类需要开发
sql-bean-encrypt 支持@MD5 ,@AES 等对字段加密解密
sql-tenant 采用sql重写,支持单表多租户模式,逻辑删除,数据权限功能

使用加速扩展性能优化结果:能达到一半手写 JDBC 的性能

查询 优化前(ops/ms) 优化后 (ops/ms) 纯 jdbc mybatis JPA
beetlsqlExecuteJdbc 222 318 678 / 64
beetlsqlExecuteTemplate 198 268 / 44 66
beetlsqlFile 191 266 / 41 /
beetlsqlInsert 139 129 248 43 59
beetlsqlGetAll 5 13 40 4 5
beetlsqlLambdaQuery 150 196 / 9 /
beetlsqlPageQuery 128 159 / 17 59
beetlsqlSelectById 186 259 670 43 61

 

sql-tenant支持多租户,数据权限,逻辑删除等 需要重写sql,增加额外过滤条件的场景,可以运行RewriteTest和TenantTest了解如何使用

 //简单集成 TenantConfig tenantConfig = new TenantConfig(); tenantConfig.config(sqlManager); tenantConfig.addColRewriteConfig(new ColRewriteParam("tenant_id", new ColValueProvider() {  @Override  public Object getCurrentValue() {  return localValue.get();  } }));

如上应该在应用初始化时候配置,这样,当遇到sql中的表具有tenant_id字段的时候,将会发生sql改写,改写的值为ColValueProvider提供 如下sql

 select * from user u ; 

将被改写成

 select * from user u where u.tenant_id= x  

需要注意,并不是所有sql都被改写,只有集成了RewriteBaseMapper的Mapper发出的操作才能触发sql改写(SqlRewriteInterceptor)

如下mapper的select方法,或者是内置的all,updateById,都会触发改写

 public interface MyRewriteMapper extends RewriteBaseMapper<OrderLog> {  List<OrderLog> select(String name); }

逻辑删除,数据权限过滤也可以用此方法,比如,通过dept_id 来过滤数据权限

 tenantConfig.addColRewriteConfig(new ColRewriteParam("dept_id", new ColValueProvider() {  @Override  public Object getCurrentValue() {  return Array.asList(1,2,3);  } }));

那么如下sql

 select * from user u ;

会重写

 select * from user u where u.dept_id in (1,2,3);

maven

 <dependency> <groupId>com.ibeetl</groupId> <artifactId>beetlsql</artifactId> <version>3.25.0-RELEASE</version> </dependency> 

   BeetlSQL 自主研发自 2015 年,目标是提供开发高效,维护高效,运行高效的数据访问框架,它适用范围广,定制性强,写起数据库访问代码特别顺滑,不亚于 MyBatis。你不想写 SQL 也好,或者想更好地写 SQL 也好,BeetlSQL 都能满足这要求,目前支持的数据库如下

  • 传统数据库:MySQL (包括支持 MySQL 协议的各种数据库), MariaDB ,Oralce ,Postgres (包括支持 Postgres 协议的各种数据库), DB2 , SQL Server ,H2 , SQLite , Derby ,神通,达梦,华为高斯,人大金仓,PolarDB,GBase8s,GreatSQL 等
  • 大数据:HBase,ClickHouse,Cassandar,Hive,GreenPlum
  • 物联网时序数据库:Machbase,TD-Engine,IotDB
  • SQL 查询引擎:Drill,Presto,Druid
  • 内存数据库:ignite,CouchBase

阅读文档 源码和例子 在线体验 多库使用 性能测试

原文链接:https://www.oschina.net/news/255678/beetlsql-3-25-0-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章