一、数据服务简介
笔者认为数据中台应该具备以下能力:
- 获取数据
- 处理数据
- 分享数据
- 展示数据
数据服务对应的是分享数据的能力。
数据服务的能力体现为,通过配置的而不是编码的方式将已有数据发布成接口,供数据需求者调用。
为什么要用数据服务?
为了减少开发周期,提升开发效率。
二、开源方案介绍
介绍不分先后,只是简单介绍
1 Rocket-API
Rocket-API 基于spring boot 的API敏捷开发框架,服务端50%以上的功能只需要写SQL或者 mongodb原始执行脚本就能完成开发,另外30%也在不停的完善公共组件,比如文件上传,下载,导出,预览,分页等等通过一二行代码也能完成开发,剩下的20%也能依赖于动态编译技术生成class的形式,不需要发布部署,不需要重启来实现研发团队的快速编码,提测以及回归。
开源公司:
无公司,个人开源
项目地址:
https://gitee.com/alenfive/rocket-api#https://graphql.cn/
2 Magic-API
magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发
开源公司:
无公司,个人开源
项目地址:
https://gitee.com/ssssssss-team/magic-api
3 Dataway
Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一个 http 端口,应用无需单独为 Dataway 开辟新的管理端口。这种内嵌集成方式模式的优点是,可以使得大部分老项目都可以在无侵入的情况下直接应用 Dataway。进而改进老项目的迭代效率,大大减少企业项目研发成本。
开源公司:
新东方
项目地址:
https://github.com/ClouGence/hasor.git
4 APIjson
提供通用接口,大部分API不用再写自动生成文档,不用再编写和维护自动管理权限和版本、自动防SQL注入开放API无需划分版本,始终保持兼容支持增删改查、模糊搜索、正则匹配等。
开源公司:
腾讯
项目地址:
https://gitee.com/Tencent/APIJSON
5 Graphql
GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。
开源公司:
Facebook
项目地址:
https://github.com/graphql
三、详细对比
详细对比各开源项目的各种维度,如果项目既发布在github又发布在gitee,则选择数值更优秀的。
涉及到打分的满分10分,分数较为主观,仅供参考。
对比项 | Rocket-API | Magic-API | Dataway | APIjson | Graphql |
---|---|---|---|---|---|
第一个稳定版发布时间 | 2020-06-16 | 2021-03-28 | 2015-07-03 | 2017-04-30 | 2015-10 |
仓库 watch/star/fork | 109/827/224 | 134/750/239 | 63/777/225 | 363/11.2k/1.4k | 538/13.3k/1.1k/ |
开发语言 | Java/JavaScript | Java/Vue | Java/Vue | Java | TypeScript/JavaScript |
文档完善度 | 7 | 7 | 3 | 8 | 8 |
易用度 | 8 | 7 | 5 | 9 | 5 |
使用场景 | 替代CRUD,减少开发成本 | 替代CRUD,减少开发成本 | 场景和Graphql相同 | apijson的定位是解决小公司、团队及个人开发者产品快速上线,在这里忽略了后端,只需要后端按照设计要求建立相关对象之后,前端就可以直接通过apijson这里的规范直接调用。 | 有多个接口需要查询有可能有交集也有可能没有交集的数据时,后端只需要一个API可以查询到数据全集,Graphql可以自动完成数据解析,封装,过滤操作。从而实现两个接口的需求 。 |
是否需要写后端代码 | true | true | true | false | true |
四、推荐度
推荐度,排名从高到低。
根据以下维度:文档、是否简单、是否需要编码、开发语言是否适合我司、是否是大厂
- APIjson
理由:1 文档完善 2 大厂背书 3 无需编码 4 语言适合我司,二次开发方便 5 使用简便 - Rocket-API
理由:1 文档完善 2 编码较少 3 使用较为简便 4 语言适合我司,二次开发方便 - Magic-API
理由:1 文档较为完善 2 编码较少 3 使用较为简便 4 语言适合我司,二次开发方便 - Dataway
理由:1 文档较为完善 2 场景不适合 - Graphql
理由:1 文档完善 2 大厂背书 3 场景不合适
这里的排名是根据需求定的,不同的项目需求场景不同,排名仅供参考!
PS:有误之处,请不吝赐教!