nocoDB初步测试总结

nocoDB (https://www.nocodb.com/)是最近开源[1]的无代码编程应用,作为Airtable的开源免费替代品,可以用来快速构建企业的后台信息系统。

类似的产品有Google的AppSheet和亚马逊的AWS Honeycode。不仅按人头收费,而且会带来深度的平台绑定。nocoDB作为开源产品个人认为很有潜力

基本功能

nocoDB本质上是一个基于关系型数据库的在线Excel

它虽然功能上比Excel弱很多,但是能够通过关系型数据库,满足许多协作场景的需要,比如数据权限控制、数据同步、审计,如下图所示:

然而截至目前(2021年8月),大部分的高级还未完成,可用性比较低。

通用API

考虑到大部分系统的后台主要工作就是进行数据的增删查改,nocoDB实现了一个通用API可以让任何三方系统对接数据库

这个通用后台提供了所有数据模型(表)的所有基本操作,用户在创建项目时可以任选GraphQL或RESTFul之一作为接口框架,并提供了完整的、自动生成的接口说明文档:

此外nocodb也提供了完整的API Token 管理系统,实现API的权限控制

系统架构

  • nocoDB 全部基于 nodejs开发,前端使用的是vue框架,后端(即通用API)使用express,所有模块都在同一个repo中实现;
  • nocoDB使用knex进行所有的数据库连接,所以基本支持所有的数据库;
  • nocoDB自己需要一个独立的数据库(也叫做「根数据库」)存储元数据(metadata),这个在系统初始化时创建,包如下表格:
  • 系统初始化之后可以创建对外的三方数据库连接

部署

整个系统设计成了无状态的模式,所有需要存储的信息都保存在外部数据库里,所以nocodb可以非常轻易的部署在大部分环境里而不用考虑状态依赖。

官方推荐使用docker方式运行,部署在Heroku上

实测使用Google Cloud Run也能轻松部署,没有任何问题。但是需要注意几个坑:

  • Nocodb的根数据库需要通过环境变量NC_DB配置
  • 如果根数据库连接需要SSL加密,最好使用环境变量进行配置,例如PostgreSQL的PGSSL环境变量;此外如果密码包含特殊字符,也最好使用环境变量提供,例如PostgreSQL的PGPASSWORD,这些都是knex.js的坑
  • Nocodb会与数据库建立大量连接,对数据库并发性能有一定要求(至少入门版的Google Cloud SQL撑不住)

结论

  • Nocodb还处于非常早期阶段,可用性较低,bug非常多,不适合进入生产环境
  • 未来完善后,可以作为小型企业的内部信息系统使用,可以节省不少内部系统开发的成本
  • 目前主流成熟的网站框架其实都有提供类似功能的模块,比如Flask-admin,Django-admin,虽然界面丑陋点,功能和稳定性还是很优秀的

[1] https://github.com/nocodb/nocodb

1 thought on “nocoDB初步测试总结”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.