以資料庫為核心的軟體時代已經過去,資料庫時代早已結束,當我看到j2ee征途中那麼多人在物件和資料庫之間彷徨痛苦ing的時候,我想我該出來喊一聲了。
很多年前,包括我自己在內的大部分企業程式設計師都是從資料庫開始我們的職業生涯,最早的是dbase/foxpro,後來有了 sql系列資料庫, oracle將資料庫時代推向了頂峰。
每當有乙個新專案時,第一步就是首先設計出資料表結構(table schema),然後開始使用sql語句實現業務邏輯,這種開發模式一直重複,就是後來加入了delphi/vb,他們也只是承擔圖形顯示實現,這種c/s結構帶來最大問題是:非常難於維護,修改起來,遷一動百。
軟體的生命在於運動,當它需要發展時,最棒的軟體人員如果對他也束手無策,這是誰的悲哀?
現在更多人開始接受b/s結構,但是他們中很多人還沒有真正明白為什麼需要b/s結構,b/s代表的多層架構才是真正目的(因此,偽多層的b/s系統遍地皆是)。
多層架構實際是將以前系統中的顯示功能、業務運算功能和資料庫功能完全分開,杜絕彼此的耦合與影響,從而實現松耦合和良好的可維護性。
二. 當然,多層結構帶來了效能問題:客戶端訪問資料庫中的資料時,通常需要經過多個層次,非常耗費效能, 如何儘量減少資料庫訪問是j2ee應用系統首要解決的問題,使用儲存過程並沒有解決這個問題,儲存過程的執行還是屬於後端,並沒有縮短客戶端請求所要經歷的坎坷路途。
解決效能問題的根本解決之道是使用物件快取,現在, 64位cpu提供的巨大記憶體空間為單台快取計算提供了硬體基礎,更重要的是,這種快取計算是可伸縮的,通過集群的快取機制(如jbosscache), 通過增加應用伺服器的數量,可以提高整個業務邏輯層的快取計算能力,拋棄過去那種為記憶體斤斤計較的老思維吧。
三. 在系統分析之初是否首先需要資料表設計呢?回答是否定的, 以uml為代表物件導向的分析設計方法已經成為強大工具,隨著面向模型驅動分析設計(mda)的普及, 面向資料庫分析方法正在逐步被拋棄,擁有深厚傳統資料庫分析習慣的程式設計師必須面對和接受這種挑戰。
縱觀整個j2ee系統開發過程,資料庫已經從過去的中心位置降為一種純技術實現,資料庫只是狀態持久化的一種手段(檔案是另外一種實現手段);什麼是持久化?這是相對於記憶體快取狀態而言,持久化就是當記憶體斷電情況下能永久儲存狀態資料,但是如果j2ee應用伺服器是7x24小時集群執行;幾乎永不當機,是否有持久化的必要呢?
很顯然,資料庫已經淪為與作業系統中檔案系統同樣的層面,以它為中心的時代真的結束了,ibm早期將db2資料庫開源已經強烈向我們昭示這點。
對於j2ee初學者來說,盡早拋棄過去的兩種影響:過程語言程式設計習慣和以資料庫為中心的設計習慣,從全新的物件導向角度(ooa、ood和oop、aop)來設計開發你的j2ee系統,j2ee設計開發三件寶:model、patterns和framework。
以資料庫為核心的軟體時代已經過去
以資料庫為核心的軟體時代已經過去,資料庫時代早已結束,當我看到j2ee征途中那麼多人在物件和資料庫之間彷徨痛苦ing的時候,我想我該出來喊一聲了。很多年前,包括我自己在內的大部分企業程式設計師都是從資料庫開始我們的職業生涯,最早的是dbase foxpro,後來有了 sql系列資料庫,oracle將...
資料庫備份 以ORACLE為例子
一 物理備份和邏輯備份 對於oracle資料庫只有物理備份和邏輯備份 物理備份 是將實際組成資料庫的作業系統檔案從一處拷貝到另一處的備份過程,通常是從磁碟到磁帶。該方法實現資料庫的完整恢復,但資料庫必須執行在歸擋模式下 業務資料庫在非歸擋模式下執行 且需要極大的外部儲存裝置,例如磁帶庫,具體包括冷備...
以Oracle資料庫為目標的資料庫高階(一)
資料庫的基本操作 增 刪 改 查。結構化查詢語言 structured query language 簡稱sql 是一種程式語言,用於訪問資料以及查詢 更新 管理關係資料庫系統。sql包括以下 6個部分 1 查詢語句 dql 2 資料操作語句 dml 3 事務處理語句 tpl 4 資料定義語句 dd...