關於
DBMaker 的二三事
一個運轉中的電腦系統會不斷的和資料庫管理系統交換資料,就像是人體和心臟的關係一樣密切
文/ 蔡明哲
幾天前和一個對電腦不太懂的朋友碰面。
"你最近如何?!"
"還不錯呀!"
"都在公司裡忙些什麼?"
"你知道我在凌群電腦的
RD 部門吧!? 我們正在開發一套資料庫管理系統!"
"資料庫管理系統? 聽起來很高深的樣子!! 是做什麼用的呢?"
... 一陣沉默 ... (又來了,難道你不知道隔行如隔山嗎?)
"這個... 你知道電腦可以處理大量資料對不對?"
"嗯! 然後呢?"
"使用電腦來做事, 最重要的目的之一就是把大量資料轉成對於人們有直接幫助
的資訊,以提供其他應用, 因此我們需要有一套有效率的方法來管理大量資料,而資料庫管理系統就是用來解決這個問題的"
"喔! 那我知道了... 咦! 可是資料庫管理系統是長什麼樣子咧?"
... (資料庫管理系統長什麼樣子? 難道我要從 010101 開始解釋嗎?)
"ㄟ! 你問的很好..." (總不能抹煞他的求知欲吧!)
"關於這個資料庫管理系統的長相呢... 你可以想像一下人體的構造.
人體內需要的 營養和氧氣都是藉著血液,循著血管來運送至細胞, 血液之所以能抵達全身,主要的原因是靠著強而有力的心臟來傳送..."
... (看他頻頻點頭的樣子,顯然可以繼續...)
"而資料庫管理系統在整個電腦系統中所扮演的角色,
就像心臟一樣,所有的資料 都是資料庫管理系統供給的。 一個優良的資料庫管理系統能夠以最快速的方式,在 眾多的資料中找到正確的資料,
提供給使用者。一個運轉中的電腦系統會不斷的和 資料庫管理系統交換資料, 就像是人體和心臟的關係一樣密切。 因此往往在選擇資
料庫管理系統的同時, 多半已經決定了這個電腦系統的效率及穩定度。"
"聽你這樣子描述,好像沒有資料庫管理系統不行?!"
"是啊! 不過不是所有的電腦系統都使用資料庫管理系統, 小一點的電腦系統就像是單細胞生物一般,不需要心臟也可以活。"
"呦! 你做的工作似乎還蠻偉大的!?" ... (呵! 呵!
孺子可教也)
"沒錯,你說對了!!"
"那麼...你做這個資料庫管理系統多久了!?"
"喔! 這個資料庫管理系統不是我一個人做的,它有個名字 - "DBMaker",我們這
個 Team 目前將近有四十個人,DBMaker 是我們共同設計開發的, 已經花了好幾年的 功夫了。"
"很不容易ㄟ! 做一個東西需要四十個人!!"
"是啊! 仔細去想,還挺可怕的,假設每個人平均薪水每月 50,000,
那麼一個月就 要花掉公司 200,000,一年就要 2,400,000 囉! 這還不包括其他費用咧! 雖然投資 相當多,不過我想這還是值得的,畢竟在臺灣來說,
目前並還未有人擁有這麼先 進的技術!"
"既然你對資料庫管理系統這麼有興趣,我就稍微介紹一下 DBMaker,如何?"
"好哇! 請!"
"DBMaker 是大型的資料庫管理系統, 它所呈現的型態是所謂的物件關聯式資料庫
(Object-Relational DBMS),也就是將資料以表格 (Table) 的型式來儲存資料,這一類的資料庫管理系統都具備某些基本功能,
比如說結構化查詢語言 (SQL,Structured Query Language),同步控制 (Concurrency Control),交易管理
(Transaction Management),資料安全管理 (Security Management),資料完整性管理 (Integrity
Management),潰損自動 回復 (Automatical Crash Recovery) 等.
接下來,我做個簡單的描述:
一、SQL 查詢語言
凡是採用關聯式資料模型的資料庫管理系統,幾乎都提供 SQL 也就是可以使用這類的命令來操作資料庫,比如
:
Select Salary from Employee where EmployeeID='900123';
Update Employee set Salary=35000 where EmployeeID='900123';
目前 DBMaker 提供的 SQL 語法支援 ANSI 92 的 Entry Level.
使用 SQL 的好處在於,操 作資料時可以直接思考資料本身的意義, 而省略資料的實體上儲存的問題和 擷取的方式,程式設計師能夠更專注在程式的邏輯,
讓程式設計更簡潔有力。
大型資料庫多以提供多數人使用為前題, 因此如何在眾人對資料 不同的操作之下,而能確保資料的正確性則有賴於同步控制.
技術上, 在資 料庫管理系統的同步控制是用所謂的 Lock Mechanism,DBMaker 的鎖定資料 的單位有三種,分別是
Table Lock,Page Lock,Row Lock。
三、交易管理
交易是一或多個操作資料庫的動作的集合, 這些動作有很強的關聯性,它們若不是一起做完,
就是全部沒做。交易進行中所發生的錯誤可能會讓資料產生不一致的現象,比如將某個員工調升並加薪, 假設這個交易包含兩個動作,調升職等及加薪,若系統發生不正常的狀況或者遇到斷電,
這個交易只進行了一半,調了等級卻還來不及加薪就停了,這個時候若資料庫管理系統沒有交易管理的功能,可能得依賴系統管理員地毯式的搜索,才能知道究竟資料有沒有一致.有了交易管理的功能,資料的狀態可以保持一致性。DBMaker
的 的所有資料庫操作動作,全部納入交易管理。
四、資料安全管理
資料安全最主要的目的是避免人為的有意或無意的破壞資料.DBMaker 的資料安全管理包括三個主要的部份:進入資料庫的身份驗證,
使用者權限等級及資料機密等級的設定,和多層式群體管理。進入資料庫必須給予密碼來驗證身份,進入資料庫之後, 使用者可以根據權限的大小來使用合乎規
定的資料. 為了方便管理,資料庫管理員可以將屬性相近的使用者合編成一個 群體來管理降低管理上的複雜度。
五、資料一致性管理
為了確保資料的一致性,在理論上有兩種規則可以幫助資料完整性的建立:
Referential Integrity 和 Domain Constraint. 第一種規則
用在不同的表格之間,建立欄位間的相互參考關係,通常這種參考關係會有先 後的依存關係, 也就是所謂的 Primary key 和
Foreign key 的作用。第二種 規則可以用來控制輸入的資料合乎需求,比如限制員工的年齡在十八歲到六十 五歲之間, 如此一來可以避免人為操作上的疏失。
六、潰損自動回復
大型資料庫一定要能克服系統潰損的問題,因為一旦資料庫毀 損而無法補救,用金錢也是無法彌補.
DBMaker 能夠在系統當機或不正 常停機之後,在下一次啟動資料庫管理系統時,自動地將資料修正到一致。"
"我的天哪! 好複雜的東西!"
"嗯! 資料庫管理系統不比一般的套裝軟體, 所以平常在大型的機器上都必須
設有專人來管理,我們通常稱呼這些人為資料庫管理員 (DBA, Database Administrator)。"
"那什麼叫做大型機器? PC 算大,還是小?"
"PC 算小機器,不過它可以根據不同的作業系統產生不同的效能. 比如在
PC 上安裝 UNIX 或 Windows NT 後,PC 就可以當作資料庫管理系統的伺服平台 來使用. 大型機器一般指的是
Workstation 或 Server 級的機器!"
"那 DBMaker 可以用在哪種機器上?"
"DBMaker 可以用在很多不同的作業平台上, 所謂的作業平台就是指作業系統
和執行的硬體設備,包括在PC上的 Windows 95,Windows NT,Solaris,Linux,SCO 以及大型主機的
SUN,HP,DEC,Data General ...等" "可以了...我已經聽得有點頭昏眼花了!"
"我們的客戶可能會使用各式各樣的作業環境,因此不得不將 DBMaker 移植到不同的作業環境上,以提高產品在市場上的競爭力!"
"講到競爭力,你們的對手多不多?"
"當然多囉! 這類型的軟體幾乎任何應用系統都要用到, 所以相對的在市場上
也會有不同廠牌的資料庫管理系統共同來競爭,但是 DBMaker 有它的獨到之處,不怕比較!"
"呦! 很有自信喔! 說來聽聽,DBMaker 好在哪理?"
除了大型資料庫管理系統應具備的基本功能外,DBMaker 最棒的優點之一就是
開放性. 因為 DBMaker 提供標準的程式界面 ODBC, 應用程式可以透過 ODBC 來連接 DBMaker。
什麼是 ODBC ?
ODBC 本身一組程式界面的定義, Open Database Connectivity 的縮寫,Microsoft 公司根據
SQL Access Group 制定的 Call Interface 規格設計出來的資料庫程式界面. 有了 ODBC, 應用系統可以存取不同廠牌的資料庫管理系統甚
至非關聯性資料庫,在跨平台或跨資料庫的應用上更具可攜性. 所以當一個電腦系統必須考慮到未來使用的彈性時, 選擇標準界面可以提高環境適應能力.
以一開始我們談到的心臟例子來說,有了標準界面, 就等於心臟和血管間有了標準的連接方式, 如果到時候心臟有什麼問題要把心臟換掉,可以任意的更換,同樣的
,如果血管有什麼問題,也是可以更換任何符合標準的血管即可,如果醫學界真的進步到有一天, 有可以任意更換的心臟和血管,說不定也會有
OHTC(哈!哈! Open HearT Connectivity) 這種標準,甚至和現在最流行的隨插即用 (Plug &
Play) 的功能,到時候換心臟, 說不定是很簡單的手術。
"哇靠! 聽你在胡扯,換心臟哪有那麼簡單!? 說的容易!"
"我只是舉個也許將來會發生的例子嘛! 你反應不要那麼激烈, 因為使用資料庫管理系統真的和我講的樣子一模一樣,尤其是
DBMaker 提供給客戶最大的方便,就是一個開放式的連接方式, 讓他們的應用系統可以避免受環境因素,導致太大的傷 害."
"為什麼有 ODBC 之後,可以讓系統避免受環境影響的傷害呢?"
"我剛剛不是特別強調,開放式的程式界面嗎? 一個開放式的資料庫管理系統可以
透過標準界面很輕易地和不同的電腦系統做連結, 而不須做大幅度的修改,若是電腦系統一開始就使用專屬性太高的資料庫管理系統, 到時候如果遇到某些瓶頸,比如公司擴大、員工增加、業務加重,
導致原有的系統不敷使用,而必須更換資料庫管理系統時, 甚至需要重新對整個系統做修改,最糟糕的是,甚至連修改 都不能,而得重新再行分析設計,
如此一來等於宣告原有系統死刑,這傷害不能 算是不大吧!?"
"這麼說來,ODBC 真的是不錯喔!"
"也不全然. 因為現在市面上流行一種以訛傳訛的說法,說 ODBC 的效率太差,以
其他廠牌的作法來講,這是事實,使用 ODBC 的方式會比他們專有的程式界面來的 慢,因為為了達到 ODBC 的要求,他們在原有的程式界面上包裝了太多層,如此一
來,效率上自然顯得較差. 但是 DBMaker 是新一代的資料庫管理系統,一開始的設計上就以支援 ODBC 為基礎, 所以我們沒有效率不佳的顧慮.
"
"這麼說來只有 DBMaker 的 ODBC 是不錯的囉! 嗯! 你們的產品還有其他特點嗎?"
高適應力
除了開放性之外,還有系統移植適應性強 (High Scalability),
跨平台 程式界面一致. 在主從式的架構之下,DBMaker的 Server 很容易移植到不同的作業 平台,而 Client
端的應用程式甚至可以直接拿到不同的作業平台, 重新編譯 ( Compile)、連結 (Link) 就可以了,根本不必修改程式。
"你現在講的東西我已經聽不太懂了..."
"喔! 其實很簡單,我的意思是如果採用 DBMaker 來架設應用程式,
可以不用考慮 太多環境因素,一開始可以用最簡單的環境,在 PC 上的 Windows 3.1就可以直 接開發程式,如此可非常節省開發成本,等開發完成後,
再把資料庫移送到 Server 端,就直接變成主從式的電腦系統了. 比起傳統的開發方式,省掉非常 多的麻煩."
多媒體資料儲存管理
"還有一個很重要的特色一定要告訴你!"
"什麼特色?"
"你聽過多媒體嗎?"
"當然聽過,雖然我對電腦不是很熟, 但是關於多媒體應該已經變成普通常識了,大
家都知道嘛! 多媒體就是把文字、聲音、影像結合在一起展示的方式,對吧?"
"耶! 不錯嘛! 很有概念!"
"那.... DBMaker 和多媒體有什麼關係咧!?"
"多媒體的應用牽涉到很多不同的資料型態,DBMaker 可以把各種不同的資料型態的
資料納入管理,除了一般常見的文字、數字外, 文章、影像、 聲音、動畫等都可以 藉由 DBMaker 來管理!"
"哇! 太棒了! 這幾天常聽朋友在談 WWW (World Wide Web),
我剛見識過了,這個 東西就有多媒體的功能了,這和 DBMaker 有關係嗎?"
網際網路應用
"當然有囉! 所謂的 WWW 是目前 Internet 上一種新式的資訊傳遞方式,它可以透
過 HTML (Hyper Text Markup Language) 描述多媒體資料的組合,來展現千變萬化 的畫面和應用,其中當然和資料的儲存管理有關.
WWW 的開發者可以藉著 CGI ( Common Gateway Interface) 對 DBMaker Server
存取資料,因此能夠免除資料管 理上的困擾,讓 Web Server 能夠呈現更多樣化的功能。我們現在己經利用 DBMaker
來架設 超庫網站 了呢!"
"好酷喔! 我回家一定去逛逛!"
其他特色
"就等著你來哦!除了管理多媒體外, DBMaker 還有其他特 色,例如:
使用者自定函數 (User-defined Function), 檔案物件 (File Object),預儲函式 (Stored
Procedure),觸發程式 ( Trigger),分散式資料庫(Distributed DBMS),全文檢索,資料庫複製
(Replication),內嵌式SQL (Embedded SQL) 等.."
"哇塞! 不簡單耶! 你們做出來的東西相當的複雜嘛!"
"嗯! 沒辦法嘛! 要滿足使用者要求,自然複雜, 不過不管內部再怎麼複雜
都無所謂,只要使用者覺得好用喜歡就好了。以目前國內的技術來看, 我們這個產品 DBMaker 應該無人能出其右! 我們也常常自許,DBMaker
應該會在臺灣的資訊史上留下燦爛的一頁。"
"嗯! 志氣很高,希望真能如你所願!!"
"謝謝你的鼓勵,我想應該沒有問題,以我們 Leader 的智慧經驗, 再加上同事間高度的企圖心和向心力,應該能很快的看到開花結果,
你且拭目以待吧!!"
"嗯! 祝你們順利成功!!"
"謝謝!!"
"別客氣,看你講的也挺累的,咱們找個地方喝個飲料吧!!"
"好主意,走!!"
|