熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

漫談數據庫的中庸思想

2013-11-23 19:17:48  來源: Java核心技術 

  想寫一篇關於數據庫的文章這個念頭已在腦海裡晃了一年多了之所以遲遲沒有下筆主要是好多想法還不夠成熟需要更多的醞釀再者很多年沒有寫過什麼東西在文筆上也是缺乏信心掐指一算自己做數據庫的設計或管理也有四五年的時間了總還是有一些心得今日拿起筆來也就一吐為快吧
  早在幾千年前中國古代的大思想家孔聖人就曾說不偏之謂中不易之謂庸後又有《中庸》解釋說中者天下之正道庸者天下之定理到底該如何理解中庸呢
  也許只有那些研究儒學的大家們才可以給出一個確切的解釋在此我們姑且不去細究但將中庸的思想運用到我們的生活和工作中我們可以有自己的理解那就是適度有節之謂當變則變不當變則持之則謂因為中之萬物則興也因為和之萬物則久遠你看我說得是不是太大了不過也沒關系既然是漫談那就隨意自然一點好了
  既然萬事萬物都遵循中庸的道理那當然我們的數據庫也就不會例外了一個有數據庫參與的項目從開始的業務調研流程分析到數據的概念模型設計數據庫邏輯結構設計物理結構設計項目實施數據庫的管理等各個階段無不要持有一種中庸的思想才可以保證項目的成功實施並保證系統具有強大的生命力其實不管是數據庫的設計開發還是管理都是充分合理恰當的分配使用現有資源是其有效的組合構成一個系統在其運作起來時達到一種理想的效益產出而其中的充分合理恰當無不是一種度的把握和中庸思想的體現而這種度的斟酌則是為了尋找到一個又一個平衡點去適應一種簡單或復雜的現實的需求這就是我們所說的而值得注意的是這個平衡點又是動態的它將隨著外部環境的變化或(和)內部因素的改變而需要得到相應的調整這就是我們所說的
  數據庫的設計和管理的任務其實就是調和現實業務和構建系統之間的矛盾而實現一種需求所謂知己知彼百戰不殆就要求我們首先對業務有一個透徹的學習調研甚至是調整因為我們討論的是數據庫中的中庸思想所以我們姑且認為在開發數據庫的應用之前我們已經對業務及需求有了一個詳盡的了解和全面徹底的理解
  以ORACLE數據庫為例其中不僅有著應對各種不同需求的對象部件或技術策略更有著成千上萬的可調整的參數或配置即使現實的需求是千變萬化的只要我們使用配置得當就能構造出運行良好的數據庫應用系統這就象修房蓋屋ORACLE為我們准備了大大小小各具用途的材料也准備了鋸子錘子等各式工具而我們就是使用合適的工具把合適的材料裁成合適的形狀和合適的大小使其組合起來形成一套舒適耐用又漂亮的房子而其中處處提及的合適與否則依賴於我們的經驗前期的工作及對數據庫的理解等等
  談到數據庫的應用我們首先想到的可能就是用數據庫來存放數據存放到數據庫的表裡而ORACLE單是表類型就有幾種堆組織表也是最常用的一種表還有索引組織表索引聚簇表散列聚簇表嵌套表臨時表每種表都有它特定的性質和特定的用途當用才用否則就會適得其反
  當談到數據庫的性能時人們最先想到的可能就是索引而索引是不是總是可以提高性能回答是不一定有人比喻索引就象加少了不夠味加多了就太鹹了事實上還遠沒有這麼簡單就是也有很多種二叉樹索引位圖索引函數索引每種都有其使用范圍適用的應用類型適用的度超出了范圍超出了度就會失去平衡失去小的平衡系統運行不暢失去大的平衡則會導致系統崩潰
  講到這裡我們明白了在數據庫中要掌握一種平衡並且是一種動態的平衡只所以是動態的因為時間在流逝很多數據庫外在或內在的因素在改變讓平衡保持靜態等於失去平衡所以原本平衡的東西需要進一步調整達到一種的新的平衡
  如若我們把上面的動態平衡作為一種縱向考慮其中的時間可以看做其變化因子那麼我們還要做一種橫向的考慮空間可以作為其變化因子那就是要注意局部的平衡與整體的平衡局部與整體不是絕對的而是相對的如數據庫服務器相對與其中的內存外存CPU它是一個整體的概念但若放到一個網絡環境中它則變成了一個局部概念數據庫系統相對於其中的各種對象如表索引視圖過程函數等它是一個整體的概念但若放在一套完整的數據庫軟件系統中其中可能有各種協議應用層和客戶層的軟件它又變成了一個局部的概念其實也可以認為一個大的系統是由很多小的系統組成的我們就是要學會用系統的觀點去看問題在局部的系統中的把握平衡而又注意到局部系統之間的平衡如下圖所示
  
  
  再舉個例子來講在進行數據庫的設計與開發是我們的設計和開發一般都運行在數據庫服務器上所使用的可見資源無非就是CPU內存外存磁盤之類而在這幾種資源中磁盤是相對短缺的資源因為磁盤IO是最耗時的工作除了配置磁盤陣列高速硬盤把不同類型的數據放到不同的硬盤上采取一種分而治之的策略以外我們更應該謹慎的是在開發應用時盡量減少磁盤IO有人以為增大內寸可以減少磁盤的物理IO這只是一個方面其實任何一個SQL調整專家都明白要減少SQL執行時的邏輯IO
  針對不同的應用類型有些是耗CPU資源嚴重有些是需要大量的磁盤IO而我們就是要做到對症下藥合理分配資源使之達到一種平衡這樣才會有最大的效益產出
  這是考慮數據庫服務器本身當著我們把它放到一個網絡的計算環境時我們就要考慮在數據庫服務器網絡應用服務器客戶端等組成的一個大系統中保持資源的分配合理例如分割應用把一些邏輯運算放到數據庫服務器利用它的強大的計算能力和臨近數據庫的數據產生的計算結果也包含了最少量的數據從而在數據傳輸時減少了網絡壓力當然采取數據庫端編程的好處還不止這麼多
  還有就是不同資源之間是相通的負擔和壓力是可以流動的在數據庫的設計中用空間換取時間就是一個很好的例子
  總之不管是橫向的還是縱向的我們都要以一種動態的觀念中庸的思想去觀察和解決問題
  
  
  

From:http://tw.wingwit.com/Article/program/Java/hx/201311/26608.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.