以數(shù)據(jù)庫為中心與面向數(shù)據(jù)庫

摘要:本文回顧了數(shù)據(jù)庫與SQL最初的目的與其中包含的架構(gòu)思想,分析了數(shù)據(jù)庫平臺在應(yīng)用架構(gòu)發(fā)展中的退化問題以及數(shù)據(jù)庫為中心或面向數(shù)據(jù)庫的架構(gòu)。面向數(shù)據(jù)庫與面向服務(wù)架構(gòu) (SOA),似乎是矛盾的:一個向前,一個向后。但在更深入的層次上,是可以實(shí)質(zhì)地結(jié)合或統(tǒng)一的。

數(shù)據(jù)庫的初衷是直接面對最終用戶

關(guān)系數(shù)據(jù)庫和SQL最初提出時,都含有直接針對最終的用戶,而不是軟件開發(fā)者或作為軟件間的接口的意思。將數(shù)據(jù)集中、專門管理,然后讓最終用戶如同到銀行存錢、取錢一樣使用,這是數(shù)據(jù)庫之父 E. F. Codd 最初的想法,所以他初次發(fā)表時使用的名字,正是“數(shù)據(jù)銀行”(data bank)。這里包含著這樣一些意思:

  1. 用戶既?。ú樵?、輸出)、也存(創(chuàng)建、修改、刪除);
  2. 數(shù)據(jù)是獨(dú)立的(存在銀行或倉庫這一事實(shí)不代表其所有權(quán)的轉(zhuǎn)移);
  3. 數(shù)據(jù)庫及其操作是內(nèi)容無關(guān)的(無論存取何種貨幣或者貨品,銀行、貨倉的設(shè)施、基本手續(xù)是一樣的);
  4. 操作簡易、通用(例如屏蔽了存放、處置、保護(hù)錢的各種麻煩)。

透過早期的dBase產(chǎn)品,也能體驗(yàn)到這種想法,及漸漸演變的過程?,F(xiàn)在的DBMS產(chǎn)品概念,基本已經(jīng)是純粹的“后臺”,而SQL也幾乎完全成為嵌入在高級程序代碼中,供程序員使用的一種中間語言,甚至就連定位為終端用戶桌面產(chǎn)品的MS-Access這樣的特殊產(chǎn)品,也很少為最終用戶直接使用。

數(shù)據(jù)庫平臺在應(yīng)用架構(gòu)發(fā)展中的退化

以前,我留意到許多程序員在設(shè)計(jì)數(shù)據(jù)庫應(yīng)用時,不使用數(shù)據(jù)庫平臺的基本特性,例如存儲過程、觸發(fā)器,CHECK、DEFAULT、NOT NULL、UNIQUE,甚至連FOREIGN KEY,PRIMARY KEY都不用。那時感覺有一部分人這樣做是出于對數(shù)據(jù)庫的理解不夠。但除去這一部分,也有很多實(shí)在的理由,比如跨平臺的需要等等。按照現(xiàn)在的主流技術(shù),中間層不僅已經(jīng)成為常態(tài),而且成為另一個可由通用商業(yè)平臺支撐下的層次(應(yīng)用服務(wù)器),這個層次看來似乎大有奪走數(shù)據(jù)庫的“邏輯層”基本功能的趨勢。按照這種趨勢,數(shù)據(jù)庫平臺基本就只發(fā)揮其“物理層”的功能:存儲、快速檢索數(shù)據(jù)。這種趨勢,與商業(yè)數(shù)據(jù)庫產(chǎn)品發(fā)展過程中拼命加厚后臺功能(例如后臺過程編程的能力)的趨勢,是有矛盾的。數(shù)據(jù)庫平臺、應(yīng)用平臺之間,面臨著一次功能的重分配或定位。

以數(shù)據(jù)庫為中心的應(yīng)用與面向數(shù)據(jù)庫

無論技術(shù)架構(gòu)的層次分工上怎樣變化,有一個基本點(diǎn)是不會變化的,即涉及到企業(yè)基本業(yè)務(wù)的綜合企業(yè)應(yīng)用系統(tǒng),是建立在“信息”(大量有意義的數(shù)據(jù))基礎(chǔ)上的,在這個背景下,“企業(yè)應(yīng)用”與“企業(yè)信息系統(tǒng)”幾乎同義。這是由企業(yè)本身的特質(zhì)決定的,應(yīng)用系統(tǒng)架構(gòu)只能順應(yīng)它。

從這個角度再去觀察,各種企業(yè)應(yīng)用(不論管理信息系統(tǒng)MIS、企業(yè)資源規(guī)劃系統(tǒng)ERP,還是事務(wù)處理系統(tǒng)TPS或決策支持DSS,甚至業(yè)務(wù)智能BI、知識管理km),都是“基于數(shù)據(jù)庫”的。假設(shè)一個企業(yè)從不同的公司購買了若干不同的應(yīng)用,按照現(xiàn)在的狀況,幾乎可以肯定,它們各自的數(shù)據(jù)庫都是獨(dú)立的。涉及這個問題的流行說法是信息孤島,其實(shí)每個信息孤島覆蓋面的重疊隱藏著更大的問題。把這樣的東西集成起來,哪怕用上最新的SOA架構(gòu),也只是掩蓋而不是解決問題的根本。站在用戶的立場上,這些數(shù)據(jù)本來就是一個關(guān)聯(lián)的整體?,F(xiàn)在沒有一種方案或技術(shù)能幫助現(xiàn)實(shí)中的企業(yè)達(dá)成這種理想的狀態(tài),但這個道理是很重要的,不應(yīng)忽視。

退一步說,企業(yè)應(yīng)用開發(fā)者至少應(yīng)該理解,數(shù)據(jù)本來不應(yīng)該是屬于特定的應(yīng)用軟件,而是屬于用戶。應(yīng)該假設(shè)先有用戶的數(shù)據(jù)——客觀存在的、整體的、自我演化中的——應(yīng)用開發(fā)者是做一些工具去操作這些數(shù)據(jù)。這樣一種觀念,稱為“以數(shù)據(jù)庫為中心”(Database-Centered),從系統(tǒng)分析與實(shí)現(xiàn)的邏輯或系統(tǒng)架構(gòu)上說,即“面向數(shù)據(jù)庫”(Database-Oriented)。不管以往的應(yīng)用開發(fā)者主觀意識是否這樣認(rèn)為,客觀地看,這是大部分企業(yè)應(yīng)用(或許可以籠統(tǒng)地歸納為企業(yè)信息系統(tǒng)應(yīng)用)都具有或隱含著的一個特征。

面向數(shù)據(jù)庫,與當(dāng)前興起的面向服務(wù)架構(gòu) (SOA),似乎是矛盾的:一個向前,一個向后。但我看它們在更深入的層次上,是可以實(shí)質(zhì)地結(jié)合或統(tǒng)一的。與面向數(shù)據(jù)庫相對照,現(xiàn)在絕大多數(shù)的企業(yè)應(yīng)用設(shè)計(jì)者的思維是“面向功能”的,或者說是前臺功能導(dǎo)向的。將這些思路對比思考一下,可能會是很有啟發(fā)的。

原始發(fā)表:flyingrobot, 2007-09-28,
https://blog.csdn.net/flyingrobot/article/details/1804688

作者印記:c8cc97


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容