wiki:codb_rodb_inbio

Version 2 (modified by sunny, 16 years ago) (diff)

--

以生物醫學資訊為例探討欄位導向與列導向的資料庫設計觀念轉換

【有關生物醫學資料庫說明】

在癌症檢查的過程當中會需要採集病患的癌症部位細胞作為醫學檢查與研究分析,這個部份屬於生物醫學的範疇,分析之後的報告內容會被整理並存放在各家醫院的病理資料庫當中,留作存檔以及醫學研究。由於各家醫院所採用的資料庫不一定相同,因此以XML文件作為資料交換算是目前常見的作法,我們根據陽明生物醫學所提供的範本癌症病理XML資料當作輸入,透過自製的解析程式將XML內的資料分別轉換到MySQL Database與Hypertable/HBase Database當中,再透過網頁查詢來取得裡面的病理資料編號篩選以及資料分群,根據這些自定的病理編號分群資料,可以再傳遞到下個步驟透過R-MPI/MPI程式去做一些分散式運算及統計,得出的結果即為生物醫學分析結果。

【背景說明】

由於在幫陽明製作生物醫學資料庫的過程中發現,其病理資料內容對於每份個案的描述方式其實不太相同,在醫囑說明的部份會隨著個案的變化增加或減少描述欄位,而若是考慮要做出資料量擴及全國或全球的生物醫學資料庫分析系統,以資料量而言應該是會多達Terabyte級數,就單一個關連式資料庫引擎,如:MySQL,來實現,可能會受限於單一資料表的使用容量上限限制,而需要設計出分散式資料庫架構來放置資料與平衡負載,這對於需要做整體資料分析的系統來說,會多出額外I/O負擔來整合搜尋結果,就搜尋效能及系統架構而言不見得是唯一最佳解;而欄位導向資料庫,如:Hypertable,強調的正是資料表可擴展至Terabyte的高度延展能力與快速搜尋效能,唯欄位導向資料庫的缺點是寫入效能不好,所以較適合批次式的寫入資料作為搜尋用途,這對於用作生物資訊的搜尋引擎也不成問題,因為這些資料正好就是成批收集後作為分析用途,因此,導入欄位導向資料庫不失為句量資料分析資料庫的好方案。

【初步觀念轉換思考】

若想要以列導向式的固定資料綱要表來呈現會延展的說明欄位,就無法以單一個表格來表達,需要再透過一份索引值對映表(Key-Value Mapping Table)來儲存說明欄位,每份個案的醫囑再以另一個表格儲存,就說明欄位的部份再以索引值來對應,而這是列導向式的資料表組成關連式資料表的通用方式,優點是寫入速度快速,缺點是需要再額外儲存索引資料以及關連式資料庫搜尋速度較慢,且單一資料表格有容量上限;若改採用欄位導向的資料庫來設計資料表,則不需要再建立額外的索引對映表格,描述欄位可以動態新增『欄位限定字(Column Qualifier)』來延展說明欄位,優點是擁有極佳的讀取效能以及一個資料表可以隨著選用的儲存空間無限延展,但由於底層資料結構採用B-Tree(屬於二元平衡搜尋樹)組成,故寫入速度慢,適合以批次的方式大筆寫入資料較不會暫用平時的搜尋時間。

【選用欄位導向資料庫理由】

  1. 搜尋速度快速
  2. 資料表延展容量隨著儲存空間改變
  3. 單一資料表就可以達到terabyte以上等級的處理容量
  4. 資料庫設計容易,資料欄位可以動態延展
  5. 資料適合以批次方式載入資料庫

【有關生物醫學資料庫中的專有名詞說明】

專有名詞說明
Primary Site指的是引發癌症的最初部位(器官)。
Title指的是初次檢查時所認定的癌症部位(器官)。
Organ Type舉凡Primary Site或是Title都是。
Tissue Type(Histology)指的都是取樣組織名稱。
Meta To/From?指的是癌症在初次檢查時已經轉移過位置,所以初次檢查時所認定的癌症部位並不是引發癌症的最初部位。
Meta To指的是要查詢從某個部位移轉出去的癌症。
Meta From指的是查詢從其他部位移轉至某個部位的癌症。
Others指的是癌症部位沒有移轉並且資料份數少於6份的資料。