BeetlSQL 3.25.0 发布,单表多租户模式支持
- 修复性能加速扩展包不支持 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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Excelize 发布 2.8.0 版本,Go 语言 Excel 文档基础库
Excelize 是 Go 语言编写的用于操作电子表格办公文档的开源基础库,基于 ISO/IEC 29500、ECMA-376 国际标准。可以使用它来读取、写入由 Microsoft Excel、WPS、Apache OpenOffice、LibreOffice 等办公软件创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写支持,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。自 2016 年开源以来已成为云原生应用尤其是 Go 语言开发者在处理电子表格办公文档时的热门选择,正在被广泛应用于大型互联网公司、中小企业客户和初创公司。荣获 2022 年中国开源创新大赛一等奖、入选 2020 Gopher China - Go 领域明星开源项目 (GSP)、2018 年开源中国码云最有价值开源项目GVP(Gitee Most Valuable Project)。 开源代码 GitHub:github.com/xuri/exceliz...
- 下一篇
【 用 go 实现的 ssh 】发布 v0.1.11 支持更多配置项
https://github.com/trzsz/trzsz-ssh 发布 v0.1.11,支持记住 ssh 私钥密码,支持 ssh-agent,支持 ~/.tssh.conf 自定义配置,以及其他更多 ssh 配置。 tssh 简介 你喜欢的 ssh 终端是否有好用的服务器管理功能?是否支持记住密码?是否有好用的文件传输工具? tssh 支持选择或搜索~/.ssh/config中配置的服务器,支持 vim 操作习惯,解决 ssh 终端的服务器管理问题。 tssh 支持一次选择多台服务器,批量登录,并支持批量执行预先指定的命令,方便快速完成批量服务器操作。 tssh 支持配置服务器登录密码,解决每次手工输入密码的麻烦( 在自己能控制的服务器,推荐使用公私钥登录 )。 tssh 内置支持trzsz(trz /tsz) 文件传输工具,一并解决了 Windows 中使用trzsz ssh上传速度很慢的问题。 在作者的 MacOS 上,使用trzsz ssh的上传速度在 10 MB/s 左右,而使用tssh可以到 80 MB/s 以上。 安装方法 客户端安装trzsz-ssh ( tssh )...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS关闭SELinux安全模块
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7