可配置化 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 服务调研的主要内容,如果未能解决你的问题,请参考以下文章

大数据组件同步逻辑代码化(调研)

Android主流视频播放及缓存实现原理调研

全云化架构:概述

GIS的调研经历,有用到GIS数据的朋友可参考!

SpringBoot使用Nacos进行服务注册发现与配置管理

11SpringBoot-CRUD-thymeleaf公共页面元素抽取