2009-01-07

演算法,節能減碳我也在行!

往返台北到龍潭渴望園區的路程,讓人想起治水的夏禹-過家門而不入。車馳轉入中豐路時,想著右轉彎就能到回到新埔南平里的老家,實際上卻得要直行入園區上工去也。

去年12月中旬的那天,照例是暖冬的豔陽天,但是我們要拜訪的客戶前幾天才宣布裁員和減薪。幸好我們訪談的主題是綠色軟體的投資成果,似乎略為平衡了不景氣帶來的不安與陰霾。客戶過去這一年全面在七大面向實踐綠色承諾,從受訪者自然帶出「任何IT投資都要考慮綠色節能」的話語,看得出這種企業文化真被放進了員工的心頭。

來自CIM工程處的受訪者主要是向我們說明,如何運用更高效率的資料庫軟體,完善提供生產資訊的優質服務。CIM系統的任務就是把一個產品生產過程的每個步驟資料記錄下來,以便找出「產品製造過程中問題的所在」。

以該公司的生產流程為例,從到基礎零件到模組整個供應鏈都是自主生產,但元件生產地卻是分散於國內外的工廠基地,它們各自的生產資料分屬於不同資料庫,而CIM團隊就要負責收集所有資料,製作成一個資料倉儲。以往每個製程階段都有自己的歷史資料庫,原本要做工程分析時,得向各個單位「索取」存放在不同資料庫內的資料。

會有這類問題,是因為產品製程含括了好幾個階段,每段的製程資料都存放在所屬的工廠資料庫內。當他們分析工程資料時,不能擷取某(幾)個資料庫而已,必須綜觀一個產品製造過程的每個環節,才能做出精確的分析結果。所以必須把這些資料完整收錄。尤其當產品販售給消費者後,它的保固期就開始生效。在保固期間內,一旦有任何故障維修的狀況發生,就會依據它的批號,回溯檢查在哪個生產環節有了問題。

這種跨段的資料收集和分析工作,以往都是交由傳統的關聯式資料庫系統處理。不過,當這種常見的做法遭遇到品項眾多的生產資料時,就會發生嚴重的執行效能問題──要一份報表得要求程式人員撰寫程式執行,偏偏執行速度又緩慢,為了將就報表產出的效率,迫不得已只能縮減歷史資料匯入的時間,例如只能匯入六個月,而非一年。這麼一來,報表分析結果的精準度也自然打了折扣。

該公司在去年接觸了一種被譽為「綠色演算法」的資料庫軟體(Sybase IQ),它專利的資料壓縮技術不但節省可觀的儲存空間,也加速資料搜尋效率,讓使用者讚歎:「投資好的演算法,就是一種節能減碳」。

演算法是軟式節能減碳

這種成效絕佳的演算法採用「以欄位為基礎(column-based)」的設計,也就是說,資料庫的所有欄位都預設成index。這有甚麼好處?舉例來說,資料庫有很多欄位,我們不知道使用者撰寫程式時會用到哪個欄位。如果,他(們)恰巧使用了一個未建index的欄位,可能就此拖垮整個資料庫,那就是一大災難囉。更何況,系統管理團隊也沒辦法長期應付使用者不斷湧入要建index的需求。有了這個機制,預估這種「未經告知而造成資料庫停擺」的事件會大幅降低,有助於維繫系統的正常運作。

當問到在測試過程中,有沒有印象比較深刻的問題解決事件。受訪者笑說,CIM團隊剛開始接觸新軟體時,給我的回報就像是最近的股市行情,一會通報OK,一會又傳來挫折。這也是難免的。如同我前頭提到的,Sybase IQ對資料處理的方式與我們傳統的思維與做法很不相同,我們要重新調整、摸索理解,原廠的技術顧問群也要花些時間弄清楚我們的使用方式。經過一個多月的討論、試作與修正後,我們越來越能掌握它的特性,也知道該怎樣運用這種資料模式。

舉個例來說,CIM團隊把原先設計擷取Oracle資料庫的程式,原封不動搬來抓取Sybase IQ資料庫,結果竟然發現後者的執行效能並沒有優於前者。檢討之後才發現,原來程式不能這樣寫──也就是程式設計應該改用Sybase IQ主張的演算法,才能有效提升資料庫的效能。經過一番調整後,不但在Oracle系統的執行速度加快了,在Sybase IQ的執行效能更是飛快無比。

這類經驗讓CIM團隊瞭解,採用適當演算法來設計程式,將能有效降低對資料庫資源的耗用,進而改善了資料庫系統的整體效能。

傳統上,我們面臨運算資源不足時,總是想著擴充硬體設施或是採用分散式運算等方法,並在充裕的運算容量內,把設備的數量和成本降到最低。而這次接觸後,我們發現「綠色資料庫軟體」的可能性。

現在,優良的程式演算法可以降低對資料庫資源的倚賴,資料壓縮技術可以讓實體儲存空間因應更長時間的資料成長需求,也就是等量的資料只需要更少的儲存空間。具備這樣特質的綠色軟體科技,預料將會是現在與未來的科技投資走向。

沒有留言: