摘要:實際上,多年前,關系數(shù)據(jù)庫的相關論文,就已經(jīng)論證了基于關系運算理論來表達客觀世界的完備性,所以上面的理想情況才變得那么合情合理。
一看這標題,你肯定會認為基本不可能,或者認為,不寫代碼最多只能做一些簡單業(yè)務場景實現(xiàn)。
常規(guī)企業(yè)及應用開發(fā)基本過程為了達成我們的目標,先來看看常規(guī)企業(yè)級應用開發(fā)的基本過程:
第一步,數(shù)據(jù)庫建表建字段。
第二步,在應用代碼里創(chuàng)建跟表對應的業(yè)務對象,并實現(xiàn)及涉及到對象之間關系的操作方法。
第三步,UI 層調(diào)用業(yè)務對象獲取數(shù)據(jù)做渲染,或者通過業(yè)務對象做持久化操作。
受常規(guī)開發(fā)思維慣性,我們會理所當然地認為,要完成第二步、第三步,不寫業(yè)務代碼,而只寫 SQL,做配置,就完成各種五花八門的業(yè)務邏輯,幾乎是不可能。
回歸業(yè)務系統(tǒng)開發(fā)本質(zhì)讓我們需要回歸一個業(yè)務系統(tǒng)的本質(zhì),來看看第二步和第三步到底做了什么。我們想象這樣一種理想情況:如果終端用戶自己就是 SQL 高手,那么他應該是完全有可能僅僅通過一個 SQL 客戶端完成所有業(yè)務邏輯的。實際上,40 多年前,關系數(shù)據(jù)庫的相關論文,就已經(jīng)論證了基于關系運算理論來表達客觀世界的完備性,所以上面的理想情況才變得那么合情合理。
那么我們不禁要問,在數(shù)據(jù)庫上層開發(fā)出來的業(yè)務系統(tǒng),究竟是要解決什么核心問題?
前面已陳述,關系運算理論及 SQL(已經(jīng)非常接近自然語言) 以其本身的完備性,已經(jīng)可以處理各種復雜的業(yè)務邏輯。那么顯然,我們在上層創(chuàng)建的應用,顯然不是為了解決數(shù)據(jù)庫自身實現(xiàn)不了的業(yè)務邏輯,而額外做的代碼工作,而是為了給不懂 SQL 的人提供的一個外殼,讓他們基于這個相對固定交互的 UI 外殼,通過一些簡單的操作比如點擊鼠標,就能方便而并正確地完成一些背后的 SQL 操作。
【圖一 單系統(tǒng)數(shù)據(jù)流】
為了實現(xiàn)上述固定交互的 UI 外殼,我們不得不在應用層,采用面向?qū)ο蟮姆椒ㄈゴ舆壿嫞藭r又不得不做一些對象和實體關系映射(ORM)的工作。這也是關系建模體系和面向?qū)ο笏季S天生的沖突所在:前者是經(jīng)過嚴格的數(shù)學和形式化推導論證過的完備建模體系,后者是編程開發(fā)模式上的一種最佳實踐。雖然有一些優(yōu)秀的 ORM 框架如 hibernate 和 mybatis 來解決這類問題,但不要忘記,我們完成業(yè)務邏輯的核心就在于 SQL 的執(zhí)行。而為了達成這一目標,ORM 的做法似乎有些舍近求遠。那么,能不能去掉第二步和第三步,只寫 SQL 做配置就能完成系統(tǒng)開發(fā)呢?
解決之道考察常規(guī)開發(fā)的第三步工作,會發(fā)現(xiàn)最終產(chǎn)出物實際上就是讓用戶在 UI 上操作完成背后對應的數(shù)據(jù)庫的 IO 操作,所以我們可以從輸入輸出這兩方面發(fā)掘本質(zhì)需求:
一方面(OUTPUT),由于關系數(shù)據(jù)庫基于表、字段的結構化表示,一條 SELECT 語句執(zhí)行的結果是可以在沒有中間代碼加工的情況下直接在頁面上呈現(xiàn)的。只要 UI 層的各個組件比如列表、表格、卡片支持對相關數(shù)據(jù)的渲染呈現(xiàn)即可。
另一方面(INPUT),用戶做的相關持久化操作,此過程比較程式化,即從頁面上取得各種各樣的數(shù)據(jù),匯總到后臺執(zhí)行 UPDATE、INSERT、DELETE 等一條或者多條 SQL(含事務) 操作,當然中間可能有一些 IF ELSE 的處理細節(jié)。
于是,為了達成本文的開題目標,我們做了Enhancer 云開發(fā)工作臺,它是一個專門用于企業(yè)級信息系統(tǒng)開發(fā)的一站式工作臺,用戶可以基于此工作臺,基本只需要寫 SQL 做配置,就能快速完成全部開發(fā)工作,并且獲得可以私有部署的系統(tǒng)。這個工作臺,作為具備完整開發(fā)功能的云 IDE,還主要做了以下兩方面的工作來達成只寫 SQL 做配置就能完成開發(fā)的目標:
一方面,它構建了一個標準化 UI 組件庫(支持三方擴展),讓組件的使用過程以配置化的形式呈現(xiàn)給開發(fā)者,直接對接 SQL 做數(shù)據(jù)組織或呈現(xiàn)。
另一方面,提供一套完備的變量數(shù)據(jù)體系和程式化的事件動作響應機制,讓開發(fā)者根據(jù)這種程式化的模式,快速地完成各種復雜的業(yè)務數(shù)據(jù)持久化操作。
【圖二 Enhancer 所見即所得開發(fā)示意】
經(jīng)過實戰(zhàn)檢驗,這種開發(fā)模式,比常規(guī)開發(fā)模式快至少 10 倍,并且迭代及維護成本都大大降低。目前已有上萬名開發(fā)者使用該平臺,完成了涵蓋各個行業(yè)各種復雜信息管理應用場景的系統(tǒng),見案例。與其他低代碼(low-code)開發(fā)工具只能開發(fā)簡單的業(yè)務系統(tǒng)不同,Enhancer 基于Z-Model 理論在開發(fā)模型上的完備性,支持全業(yè)務場景開發(fā),沒有任何技術限制,歡迎嘗試并指教。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74562.html
摘要:實際上,多年前,關系數(shù)據(jù)庫的相關論文,就已經(jīng)論證了基于關系運算理論來表達客觀世界的完備性,所以上面的理想情況才變得那么合情合理。 一看這標題,你肯定會認為基本不可能,或者認為,不寫代碼最多只能做一些簡單業(yè)務場景實現(xiàn)。 常規(guī)企業(yè)及應用開發(fā)基本過程 為了達成我們的目標,先來看看常規(guī)企業(yè)級應用開發(fā)的基本過程: 第一步,數(shù)據(jù)庫建表建字段。 第二步,在應用代碼里創(chuàng)建跟表對應的業(yè)務對象,并實現(xiàn)及...
摘要:正是存在問題,促使我們考慮引入數(shù)據(jù)庫審核平臺。的確,與很多互聯(lián)網(wǎng)公司相比,數(shù)據(jù)庫數(shù)十套的估摸并不是太大但與互聯(lián)網(wǎng)類公司不同,類似宜信這類金融類公司對數(shù)據(jù)庫的依賴性更大,大量的應用是重數(shù)據(jù)庫類的,且其使用復雜程度也遠比互聯(lián)網(wǎng)類的復雜。 作者:韓鋒 出處:DBAplus社群分享 Themis開源地址:https://github.com/CreditEaseDBA 拓展閱讀:宜信開源|數(shù)...
閱讀 2398·2021-11-23 09:51
閱讀 1209·2021-11-22 13:54
閱讀 3422·2021-09-24 10:31
閱讀 1066·2021-08-16 10:46
閱讀 3619·2019-08-30 15:54
閱讀 700·2019-08-30 15:54
閱讀 2886·2019-08-29 17:17
閱讀 3154·2019-08-29 15:08