Atitit 效率提升法细则 v3 t028.docx Atitit 提升效率细则 目录 1. 目标 2 1.1. 配置化增加扩展性 尽可能消除编译 方便增加 调整业务逻辑 2 1.2. 统一接口
Atitit 效率提升法细则 v3 t028.docx
Atitit 提升效率细则
目录
1.1. 配置化增加扩展性 尽可能消除编译 方便增加 调整业务逻辑 2
1.2. 统一接口(参数传递完整化,同时附加传递xml selectid) 2
1.3. QL动态通用化,消除mybatis内大量的查询与简单操作类似sql 2
2.2. Sql,存储地方可选择放在mybatis xml 或者数据库sp(可以免部署),都可以实现免编译目标,配置化 3
2.3. 业务逻辑尽可能使用4gl(比如sql 工作流 规则引擎等类似东东) 3
3.1. 动态语言 适当的使用脚本(js php xml sql等) 4
4.1. 利用Mybatis实现业务逻辑配置化(脚本化工作流模式) 5
4.2. 多利用数据库 view sp 触发器等机制实现配置化 5
4.3. 多利用数据库user与权限配置机制实现权限配置 5
4.4. 多使用数据库的各种约束校验机制 unique索引,外键,触发器 约束等机制 5
4.6. 跨库调用,可以把次模式看成看成一个调用socket非文本模式接口即可( 通过数据库驱动) 5
7.1. Scheme free模式 多使用nosql json 半结构化数据 6
查询与简单数据操作直接QL解决
复杂逻辑可以通过脚本 sql 或类似工作流 逻辑引擎的东东来消除
避免散落在多处,实现业务层接口统一化
实现数据层接口统一化
综合流程
综合数据类业务查询操作实践
JPQL》>jpql AST》 转换为sql ast 》转换为sql ,执行,返回数据
Webdav远程编辑器模式 + sp
语言级别 | 具体实现 | 范例(分组查询操作日志) |
5g
| 完全自然语言实现 | 查询操作日志表,按照人员id分组,然后统计每个人的操作次数 |
4.9g
| 基本自然语言,可用注解标识出精确化归一化,方便解析识别构造AST | @q查询@t操作日志表,按照@grp(人员id)分组,然后统计每个人的@sum操作次数 |
4.5g
| 受限自然语言(ql语法) 比较严格的NL自然语言语法 | 查询(操作日志表).按照分组(人员id).获取(人员id,记录条数) |
4gl
| (mybatis xml ,sql 工作流 规则引擎等 ) | Select 人员id,count(id) From 操作日志表groupby 人员id |
3.5 | 各种script (js python Php等) |
|
3gl | Java net c# golang等编译型语言 |
|
2gl | C c++类 |
|
1gl | Asm汇编 |
|
- 利用现有机制配置化
- 利用Mybatis实现业务逻辑配置化(脚本化工作流模式)
- 多利用数据库 view sp 触发器等机制实现配置化
- 多利用数据库user与权限配置机制实现权限配置
- 多使用数据库的各种约束校验机制 unique索引,外键,触发器 约束等机制
- 多使用数据库定时器
- 跨库调用,可以把次模式看成看成一个调用socket非文本模式接口即可( 通过数据库驱动)
- 使用脚本实现配置化
sql 或类似工作流 逻辑引擎的东东来消除
- 集成化
- Wolrd excel等
- 少量数据情况下直接集成化excel,免得开发ui与crud概念,只需要读取就可以了
- 直接json配置化通用配置化等
- 多使用proper配置化文件 与ui集成
- 前后端数据查询操作语言QL
1.2.效果概览
查询表格(操作日志表),条件( 操作人=小新),and(时间=2018),排序(时间),翻页(页数=7,每页=50)";
经过全面的解析,转换为sql
SELECT * FROM 操作日志表 WHERE 操作人 = '小新' AND 时间 = '2018' ORDER BY 时间 LIMIT 50 OFFSET 300
特别是管理类系统(包括web系统后台管理系统),可以不用中间层中转。。直接客户端收发sql, 业务逻辑也可放在客户端处理。瘦服务端
数据库 nosql mongodb 直接json 对用redis
范式设计主要是为了减少数据冗余,对存储空间简约有帮助,时过境迁,今天存储已经很便宜。。适当的反范式设计同时也可提升性能与开发效率
根据团队规模,公司规模,项目需求来定制方案完善
语言选择java net js python php xml sql等
比如微服务的nginx模式,dobbo模式,springcloud模式多种实现方案
数据分片的 msql oracle实现模式,读写集群,分区机制模式,分库,数据库中间件模式
Share jdbc mycat等
大公司的解决方案慎用,绝大部分不适合中小公司,过重
可支持sp里面调用
处于安全考虑,复杂业务多语句放入后端,第一条语句作为触发机制,然后可以使用触发器级联下级sp业务。。这样就解决了jpql处理复杂业务的问题
或者使用mybatis调用 selectid 解决得了。。
也可以窜入sp id,直接调用,免部署