为了达成我们开题的目标,先来看看常规企业级应用开发的基本过程:
受常规开发思维惯性,我们会理所当然地认为,要完成第二步、第三步,不写业务代码,而只写 SQL,做配置,就完成各种五花八门的业务逻辑,几乎是不可能。
让我们需要回归一个业务系统的本质,来看看第二步和第三步到底做了什么。我们想象这样一种理想情况:如果终端用户自己就是 SQL 高手,那么他是不是完全有可能仅仅通过使用 SQL 客户端就能所有业务逻辑呢?
【图一 SQL 客户端操作示意图】
答案是肯定的。实际上,40 多年前,关系数据库的相关论文,就已经论证了基于关系运算理论来表达客观世界的完备性,所以上面的理想情况才变得那么合情合理。那么我们不禁要问,在数据库上层使用其他语言开发出来的业务系统,究竟是要解决什么核心问题?前面已陈述,关系运算理论及 SQL(已经非常接近自然语言) 以其本身的完备性,已经可以处理各种复杂的业务逻辑。那么显然,我们在上层创建的应用,不是为了解决数据库自身实现不了的业务逻辑,而额外做的代码工作,而是为了给不懂 SQL 的人提供的一个外壳,让他们基于这个相对固定交互的 UI 外壳,通过一些简单的操作比如点击鼠标,就能方便并正确地完成一些背后的 SQL 操作。
【图二 单系统数据流】
为了实现上述固定交互的 UI 外壳,我们不得不在应用层,采用面向对象的方法去串接逻辑,此时又不得不做一些对象和实体关系映射(ORM)的工作。这也是关系建模体系和面向对象思维天生的冲突所在:前者是经过严格的数学和形式化推导论证过的完备建模体系,后者是编程开发模式上的一种最佳实践。虽然有一些优秀的 ORM 框架如 hibernate 和 mybatis 来解决这类问题,但不要忘记,我们完成业务逻辑的核心就在于 SQL 的执行。而为了达成这一目标,ORM 的做法似乎有些舍近求远。那么,能不能去掉第二步和第三步,只写 SQL 做配置就能完成系统开发呢?
考察常规开发的第三步工作,会发现最终产出物实际上就是让用户在 UI 上操作完成背后对应的数据库的 IO 操作,所以我们可以从输入输出这两方面发掘本质需求:
于是,为了达成本文的开题目标,我们做了无远开发平台(Enhancer),它是一个专门用于各种系统应用开发的一站式工作台,用户可以基于此工作台,基本只需要写 SQL 做配置,就能快速完成全部开发工作,并且获得可以私有部署的系统。这个工作台,作为具备完整开发功能的云 IDE,还主要做了以下两方面的工作来达成只写 SQL 做配置就能完成开发的目标:
【图三 无远开发平台(Enhancer) 所见即所得开发示意】
经过实战检验,这种开发模式,比常规开发模式快至少 10 倍,并且迭代及维护成本都大大降低。目前已有上万名开发者使用该平台,完成了内容涵盖各个行业各种业务需求场景的应用,见案例。
与其他低代码(low-code)开发工具只能开发简单的业务系统不同,无远开发平台(Enhancer) 基于Z-Model 理论构建而成,支持全业务场景开发,也没有任何技术限制。而试图不写 SQL,以纯拖拽配置产出系统,意味着这种无 SQL 开发方式在逻辑能力上能与关系运算等价,才可能生成数据库可执行的满足各种业务需求的业务 SQL【参考图一】。由此难度可知,这样的无SQL产出系统的方式不存在,或者适用面非常局限。
欢迎大家踊跃尝试并不吝赐教!
所说的,是我能理解的
看过。。学习
拨云见日,茅塞顿开,膜拜大佬
面向数据表开发最大的问题还是在于灵活性不足吧, 如果脱离类似企业活动这种报表查询型的业务场景, 数据表就无法支撑了. 换个极端一点的, 比如游戏开发领域, 在不考虑游戏性能的情况下, 通过数据表开发实现复杂多变的游戏业务逻辑无疑是致命的.
无远也是适合sql为主的管理类软件,游戏类的肯定不适合,游戏类sql只是配角
无远肯定不适合拿来做游戏吧,但是管理游戏会员的资料用无远来做是很棒的
人才人才,喷不了
明天来我们公司报道,需要你这样的人才!
很深刻,启发了后续的开发进程.
你就是我们需要的人才!明天来推广部上班