自動化,通常指機器自己會動,平常不太需要人力去管,直到機器出了毛病、可能造成大錯的時候,機器才會停下來。大家用的機器越來越多,依賴度越來越大,像賴以運作的醫療或商業資訊,任何時間都可能需要,負責儲存資料的電腦系統,則更沒有停機維修的空間。電腦硬軟體的製造固然越來越可靠,卻仍趕不上越來越嚴格的要求,電腦系統當機導致損失的事常有所聞,大家最怕的就是資料的毀損。資料管理系統當然知道嚴重性,所以把大部分的力氣都花在資料的偵錯、與錯誤的復原上,使成本大幅度提升,資料真的發生錯誤,復原也複雜而緩慢。但麻省理工學院 MIT 的科學家們,就認為不必如此費事,因為可以讓軟體自行修理彌補資料的錯誤。
MIT 電腦實驗室的 Martin Rinard 教授與 Brain Demsky 研究員,發展出一種方式,用少量的資源與極快的速度,把錯誤找到、修復,而且不必重新開機。傳統的作法,多是藉掃瞄電腦程式來尋找彌補錯誤,這兩位則是使用一個資料模型,來關連資料內部一致性。目前的系統處理資料上的錯誤,用的方式簡單但笨拙,好像錄音錄影先把資料的異動一一記錄,遇到了狀況,再把錄過的「帶子」倒回去,「重演」一次來修正,所以費時費事。這兩位用的方法,是先把資料實體結構製成一個「抽象模型」 (Abstract Model),模型是實體的簡化版本,維持資料的精髓、但刪除計算上複雜。資料一旦發生錯誤,模型就立即顯示出來,這與利用核子共振掃瞄顯示出身體上異常的部位,在理念上相同。
資料發生錯誤的原因很多,從人工輸入的錯誤、到程式計算的錯誤、到設備故障引發的錯誤、到系統運轉異常所導致的錯誤,不一而足。預防錯誤的措施也很多,一些證件的號碼最後一碼是「檢查碼」,就是預防錯誤用的,這個碼是前面號碼經固定公式計算出來的,系統重算一遍的結果與檢查碼不符,不是前面的碼錯了、就是檢查碼錯了。資訊的底層 0 與 1,也有一整套自動偵錯與自動改錯的技術,也是電子通訊的專門領域,資訊在網路傳輸,怎麼知道 0 不會變成 1、1 不會變成 0,系統都會自己偵測、修正,我們不必擔心。我們要擔心的,反而是上層資料的一致性 (Consistency)。
單項資料的意義不大,僅僅是記錄而已;幾項資料連起來,可能是一個人的履歷,也可能是一筆生意,意義就大了。一個八十歲的老翁接到幼兒入學通知,顧客買東西付過帳過幾天又收到催繳帳單,都是多項資料集在一起產生不合常理、不一致的現象。靜態資料不一致也許僅是輸入錯誤,容易解決;但在動態環境,尤其是多樣裝備靠網路「薄弱連接」 (Weak Connection),大家既不永遠連在一起、資料的儲存也分散各處,資料的存取更動,難免因時間的不同步無法維持一致。雖然各資料管理系統都有讓資料一致的功能,但各種不同型態的系統,需要不同型態的資料檢驗,資料一致仍是一大問題。
Rinard 與 Demsky 兩位教授的新方法是制訂兩項規則,規則一是把資料結構轉換成一個簡化的抽象模型,規則二是用這個模型來描述資料一致的屬性,一旦模型顯示出資料的不一致,就啟動一連串的動作,包括把漏掉的資料補回、把缺少的資料製作填入、把出錯的刪除、然後移動整體資料結構、使之一致。這個作法有一個很大的好處:修補資料的同時,系統還可以繼續運轉,不若現在的資料管理系統必須停機才能復原。Rinard 教授解釋說,傳統的資料管理系統都假設資料的一致,遇到不一致的情況,即使再小、再次要,程式也不知道怎麼辦,只好停機讓人處理。新的方法,僅僅把不一致的地方變成一致,就可繼續運轉,無須停機。
傳統的方式、也就是現在大家用的方式,是靠系統「錄製」資料的動態、遇到狀況「倒帶重播」來復原,所以佔據大部分的系統資源。Rinard 教授的模型方式,不但所用的系統資源遠遠低於傳統,而且更可靠,他說:如果因為軟體的 Bug 導致停機,資料倒回重播幾次都沒有用,仍停在同一地方;新方式避開程式,從資料的完整著手,就可避免這個狀況。MIT 這項研究計畫,不僅是針對資料,目標是擴展到所有的軟體,不論出了什麼狀況,都能自行察覺自行修正,繼續運轉而不必停機。
不停機軟體的需要,自然是一天比一天迫切,軟體既然是人寫的,難免出錯,如果有系統能偵測、匡正人的錯誤,讓軟體本身自動化運作,是大家多年夢寐以求的夢想。現在,這個夢快實現了,MIT 說 2 到 4 年這個「無錯軟體」就能上市了。
對這個題目有興趣的讀者,請參閱兩位教授的文章:
Automatic Data Structure Repair for Self-Healing Systems(PDF)
|