DB2数据架构:高效的智能应用案例--华夏物联网

亚洲男人的天堂在线播放,久久99精品久久久久久清纯,日本乱人伦片中文三区,亚洲精品中文字幕乱码三区,777亚洲熟妇自拍无码区

DB2數據架構:高效的智能應用案例

專家觀點
天極網開發頻道
2012-03-07
[ 導讀 ] 即使您的團隊中都是非常有才華的應用程序開發人員,他們仍會做一些錯事,這會減少他們為公司提供的價值。我經常看到的一個最顯著的例子是:使用應用程序代碼去完成 DB2 可以更高效完成的工作。

    即使您的團隊中都是非常有才華的應用程序開發人員,他們仍會做一些錯事,這會減少他們為公司提供的價值。我經常看到的一個最顯著的例子是:使用應用程序代碼去完成 DB2 可以更高效完成的工作。

  在 20 世紀 80 年代 IBM 推出全新的 DB2 時,大量的應用程序開發人員都在學習如何使用 SQL(順便說一下,這也是 IBM 發明的)進行編程。雖然掌握這門語言需要時間,但現在 DB2 已經推出 27 年了,仍由程序員使用應用程序代碼來連接表,而不是充分利用 SQL 的面向集合的特性。換言之,他們在用應用程序代碼去完成 DB2 應該做的事。在這篇專欄中,我將嘗試介紹一些案例,讓 DB2 去執行它可以替您執行的工作。

  讓程序員的時間更有價值

  沒有人喜歡看到開發小組總是在做重復的事。如果程序員編寫有用例程的方式無法讓其他程序員輕松發現該例程的功能,或者無法輕松地使用它,那么所導致的結果肯定是做了不必要的重復勞動,因為其他人最終會在其程序中從頭編寫相同的邏輯。這還會導致在某種程度上延長應用程序的維護時間,從而導致可用來開發新應用程序的時間縮短,因為您必須在不同的程序中更新類似的功能。

  DB2 對此可提供很大的幫助。有多種方法將邏輯置于 DB2 級別的應用程序中,讓訪問數據庫的所有程序都可使用該邏輯。例如,為了響應在表中插入、刪除或更新行,可使用觸發器 讓某個操作自動執行(幾乎所有的操作都可以使用 SQL 表達)。您可使用觸發器確保某個雇員的薪水位于允許的范圍內,方法是在更新后的薪水超出該范圍外時發出一個錯誤。觸發器還能調用 DB2 中已存儲的過程和用戶定義的函數,這些過程和函數是以DB2對象的形式封裝邏輯的一種方法。如果更新 PARTS 表中的行后庫存的商品數低于某個指定的閾值,那么觸發器就會調用某個已存儲的過程,再次定購目錄中的該商品。

  在 DB2 數據庫中實現的以數據為中心的邏輯越多,程序員就可以將更多的精力放在編寫能直接滿足公司各種商業需求的代碼上。如果您認為某些與數據有關的邏輯能在企業中廣泛應用,那么可以同 DB2 DBA 談談,將這些邏輯部署在應用系統的數據庫層中,最終可讓公司中的所有程序員更高效、更高產地工作。

  面向未來的應用程序

  隨著時間的流逝,數據庫也發生了改變。通常數據庫變得更大了,并且數據庫中存儲的數據的特征也發生了改變。例如,過去表中內容基本上只有一列,而現在可能變得包含大量重復的值。用戶希望在經歷這些改變后,應[FS:PAGE]用程序執行任務時仍保持一致性,但如果程序員在做 DB2 應該去做的工作,那么這種一致性實現起來就很困難。

  舉個例子:用應用程序代碼來連接表。這意味著程序員要確定數據訪問路徑。問題馬上就來了:如何知道程序員是否作出了正確的決定?在表 A 上編寫一個游標,獲取合格的行,并在表 B 中尋找匹配的內容,實際上這些就是我們所謂的嵌套循環連接。如何知道嵌套循環方法是連接這些表的正確方法?合并連接是否是正確方法,混合連接 (DB2 for z/OS) 或哈希連接(DB2 for Linux、UNIX 和 Windows)又怎樣呢?

  DB2 執行表連接工作時,SQL Optimizer 會根據 DB2 目錄中存儲的統計信息來確定成本最低的結果集生成方式。DB2 Optimizer 能夠出色地完成本職工作,因為自從 IBM 發明基于成本的 SQL 語句優化后的 30 年中,一直在對 DB2 Optimizer 進行改進。

  數據庫逐漸發生變化時,就會出現第二個問題。也許數據庫變得非常大,查詢得到的結果集比以前大很多,并且其他表連接方法的性能要比最初選擇的方法要好。如果由 DB2 負責處理連接工作,那么 DB2 Optimizer 會自動調整訪問路徑。如果用應用程序代碼完成連接工作,則會出現性能下降,從而導致需要重寫程序。

  類似的是,用編程方式進行連接會讓數據庫變得無法維護,或者維護工作變得很復雜。假設某個通過程序代碼執行的表連接工作主要取決于具體索引是否存在。如果表中累積了太多的索引,致使插入和刪除操作的成本過高,則需要刪除這些索引(在數據庫中這隨時都會出現這種情況)。如果由 DB2 負責處理連接工作,它可切換到不同的連接方法并實現可接受的性能。但是需要重寫硬編碼的連接。您無法更改硬編碼程序中的連接方法(除了重寫程序),所以用編程方式實現的連接可能讓 DBA 無法進行實際的數據庫更改,而這些更改會減少關鍵數據更改操作的執行時間。

  底線是:讓 DB2 完成盡可能多的工作,將訪問路徑選擇處理工作留給 DB2 去完成。這樣,當數據庫隨著時間的流逝而不斷改變時,有助于保持應用程序的性能不變。總之,您要考慮到您的公司已經為 DB2 中內置的復雜 SQL 優化技術付過費了。

  提高應用程序的 CPU 工作效率

  程序發出一個 SQL 語句之后,該語句必須從程序到達 DB2,執行完該語句后,必須將控制權歸還給應用程序代碼。數據在程序與 DB2 之間的來回旅行可不是免費的。減少應用程序代碼中的 SLQ 語句數目,就會減少來回穿過 ―應用程序-DB2‖ 邊界的 CPU 累積開銷。讓傳輸到 [FS:PAGE]DB2 的信息變得更少,這樣完成工作會實現顯著的性能提高,此處的重點是不要關注于單個工作單元,而是關注總體的工作負載。每個交易所用的 CPU 時間雖然只有很小的差別,但在每秒執行數萬個交易時,或者批處理工作要使用輸入文件中的數萬個記錄時,累積的差別會非常顯著。

  要想從 CPU 效率的角度真正實現高性能,開發人員需要跟上并準備好利用各種全新的 DB2 特性和功能,減少應用程序與 DB2 之間的通信。例如,可以考慮使用 MERGE 語句,通過使用該語句,可根據一組輸入記錄來更改表、與輸入記錄匹配時更新目標表的數據、不匹配時則在表中插入新的行。這樣做可以節省 CPU 使用時間,因為老方法是針對目標表執行 SELECT 操作,查看是否存在與輸入記錄匹配的行,然后執行 UPDATE(如果有匹配行)或 INSERT(如果沒有匹配行)。類似的是,與一次插入一行相比,使用多行 INSERT(有時稱為塊 INSERT)將多個新行插入表中(使用一個 INSERT)也可以節省 CPU 使用時間。尋找可用更少 SQL 語句就能完成數據檢索和更改的方式,這樣就可以減少 DB2 服務器上的負載。

  讓 DB2 幫您完成工作

  讓 DB2 完成使用 SQL 可以完成的所有工作,這才是最正確的方式。記住,一些邏輯實現 SQL 工作(例如創建觸發器)是 DBA 所熟悉的,所以您可以在需要時向 DBA 求助。DB2 數據庫中內置了易用且可重用的功能,隨著數據庫的更改的增加,可以用更一致的方式維護應用程序性能,并且程序的 CPU 使用效率會更高,這些都會讓您的公司受益匪淺。不要再費勁地編程了。程序本身就是智能的。

【聲明】物流產品網轉載本文目的在于傳遞信息,并不代表贊同其觀點或對真實性負責,物流產品網倡導尊重與保護知識產權。如發現文章存在版權問題,煩請聯系小編電話:010-82387008,我們將及時進行處理。

相關文章

常識之上的便利:智能家居設備的安全困境

智能家居設備用于監控或控制我們家中的環境。這些技術奇跡通過處理溫度、照明、娛樂系統和其他設備的變化,使生活更輕松。但是,雖然它們非常方便,但我們不能忽視它們的使用所造成的安全噩夢。那么將所有設備,甚至警報和安全系統連接到互聯網...

09月22日 16:10千家網

京東物流落成全球規模最大倉揀一體智能物流園區

緊密鏈接生產與消費,在推動半日達等優質物流服務普惠的同時,帶動全產業鏈的提質升級。

06月15日 19:13新華財經

美格智能5G模組助力電力巡檢之無人機產品智能化高效運作

近日,美格智能與國內大型工業無人機及全自動機場制造商云圣智能合作,針對電力行業推出了全新一代適配5G網絡的“虎鯨Ⅲ”全自主工業無人機,該設備搭載了美格智能5G工業級通信模組SRM815,利用“機器人+人工”相結合的方式,可實現...

06月10日 11:30美格智能

2020北京國際智能倉儲及物料搬運技術博覽會

  關于展會:現代物流最大的趨勢是網絡化與智能化,以智能倉儲為核心的現代物流,主要體現在自動控制、智能機器人、智能搬運、智能信息、數據軟件等。內部物流、物料搬運與現代制造業相融合,智能倉儲系統作為生產系統的重要部分,有著具足輕...

02月24日 20:59本站

物聯網加速融入生活場景,智能家居設備能做什么?

智能設備和物聯網已經進入現代家庭生活的幾乎所有方面。從您的安全系統到冰箱,“智能”電器已成為新常態。但它們真的能讓你的家變得更好嗎?或者所有這些智能家電只是另一種時尚,從長遠來看,您最終會后悔花額外的錢?讓我們來看看在家里裝滿...

06月01日 20:48千家網