可配置化 CRUD 服务调研
Posted sp42a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可配置化 CRUD 服务调研相关的知识,希望对你有一定的参考价值。
目标
前期产品已为数据分析提供了较好的数据查询服务,但对于新增、修改和删除暂未实现。故尝试在这次新版本中提供完整的 CRUD 服务,以便提高效率。
需求、要点分析
在软件开发中,通常会处理很多对象,这些对象之间具有关联关系,数据处理最终都转化成基本的 CRUD 增删改查。围绕 CRUD 的 SQL 命令,基本需求如下。
- 使用者摆脱具体的后端框架/DAO 层/ORM 层,直接编写数据库 DML 语句
- 提供前端界面管理和维护服务,通过配置编写 SQL,减少其他无关编码,清晰直观
- 不再采用代码生成的方式,支持用户在线开发,直接配置即可完成一个表模型的增删改查功能
- 减少使用者学习成本,只需要熟悉 SQL 语句可快速上手
- 不是写死 SQL,而是提供一定灵活性,可插值 SQL 和动态 SQL(
if
判断的流程) - 通过 HTTP/JSON 发布服务,暴露 RESTful API 接口
在此需求上,进一步分析实现的要点。
- 基于主流框架实现:Spring Boot 和 Mybatis,利用 Mybatis 的动态性执行语句
- 编排数据库的数据源和 SQL,动态修改即刻生效,无须重启服务
- 暴露 API 也是同理,无须重启服务
- API 接口文档,可通过 Swagger 生成
-提供其他关于数据库更多辅助的功能,例如监控、日志、导入导出、自动定时备份等
难点分析
动态解析 SQL 交给 Mybatis 去执行,所以这一层实现不难。当前设想的难点如下;
- 因涉及写操作(修改、删除),故需要重视数据权限的审核,还有安全类的问题(SQL 注入等)
- 适合多少的并发量,如何应用缓存
- API 生成 JSON 的格式定义,如何适应不同的项目(如分页参数、返回字段命名等)
- 注意模块之间的耦合性不能太强
同类产品
CrudApi
官网 https://crudapi.cn。特点:以元数据为基础,无需编程,只需配置表单和关系即可。以最少的
配置帮助你专注于业务。支持主子表,级联保存等。
分析:对于复杂查询貌似不开放定义
Erupt
Erupt Framework (https://www.erupt.xyz/)是一个通用后台管理框架。Erupt 可快速的构建管理页面,零前端代码、零 CURD、自动建表,仅需单个类文件 + 简洁的注解配置,即可快速开发企业级 Admin 管理后台!
分析:通过配置注解即可提供完整的一切,包括 UI,但耦合性过高
类似也有百度的 amis(https://gitee.com/baidu/amis),只不过换成 JSON 配置,而且只生成
UI,不涉及 CRUD.
以上是关于可配置化 CRUD 服务调研的主要内容,如果未能解决你的问题,请参考以下文章