• 沒有找到結果。

總結本文,對於個別的資料庫,有別於一般關連式資料庫中資料表綱要的 設計,本文提出了使用generic data-type 的設計來代替資料庫的資料表綱要,讓 使用者在儲存資料時,無須重複定義綱要,只需要將欲存入的資料以XML 來定 義實體以及實體類型,且在各分散的資料庫之間都能夠通用。

相較於在格網環境上撰寫應用程式,我們提出了讓使用者編寫能夠在資料 庫端執行的程序。使用者利用XML 來編輯一段程序,程序提供了矩陣的基本運 算外,還提供了條件判斷、迴圈控制、插入檢查點等功能,並能夠轉譯成資料庫 端能執行的內儲程式。另一種格式的程序,除了讓使用者能夠呼叫已存在的內儲 程式外,還能夠將工作指派給遠端的資料庫來進行運算,也能夠將本地端的資料 傳遞到指定的機器上。

在建置完各分散的資料庫之後,我們利用 Java 實做了一個服務,每個資料 庫皆會伴隨著一個服務,服務與服務之間使用 Xml 來溝通,並利用 socket 來傳 遞訊息。此外,我們對資料庫內矩陣類型的資料使用oracle 的備份機制,輸出成 dmp 格式檔案,並能夠利用程序的控制,傳輸到指定的機器上並完成輸入,來達 到資料共享與備份的功能。

我們的系統目前的實作完成了建置分散式資料庫初步的環境。對於各資料 庫間運算工作的排程、運算資源的預測及網路頻寬的偵測等等,都是我們接下去 發展的目標,以期能夠達到一個類似格網環境,能夠平行運算且資料共享機制完 全的一個高效能分散式資料庫運算環境。

附錄一

微陣列矩陣晶片簡介

自從人類基因序列被大量定序解碼後,許多與生物相關的資訊研究,被各 領域的研究人員所提出,包括了大量的微陣列矩陣(Microarray)的實驗資料,基 因序列的定序,基因功能的預測,以及將基因資訊應用在藥物研發與疾病治療。

而如何處理儲存這些大量的資料,並從中去發掘並分析出對生物學家有幫助的資 訊,則是現今生物資訊研究的重點

生物晶片的概念起源於二十世紀80 年代後期,歐美許多研究單位體認到結 合微電子、微機械、生命科學和生物訊息等的綜合產物---生物晶片 ,其發展和 應用必將會二十一世紀帶來一場生物技術革命。總體來說,生物晶片研究在已有 許多重大成果,如為陣列矩陣 (Gene Chip, DNA Chip or Microarray)、蛋白質晶 片 (protein chip) 、 微 流 體 晶 片 (Microfluidics) 及 多 功 能 處 理 晶 片 (Lab-on-a-chip)。微陣列矩陣(Microarray)是一種可以同時平行測量成千上萬機音 的mRNA 含量,並間接說明基因的表現程度。在雙色的 cDNA 生物晶片(two-dye cDNA Microarray)中,更進一步比較兩種個體,組織或細胞基因表現程度的差異。

微陣列矩陣製程一般可分為兩大類:(一)In-situ 以光罩法(光蝕刻法)為 主:仿半導體製程,生物探針直接在晶片上合成,(二)Ex-situ 以點片法(Spotting)

為主:生物探針合成後再由點片裝置點到晶片上。點片的方式又可分針點式 (pin)、噴墨式 (Inject Printing) 與壓電式(Piezoelectric-printing)。微陣列矩陣之製 備將 cDNA,以微陣列點樣系統佈放於晶片上即完成。於反轉錄過程中,將 Biotin-dUTP 或 Dig-dUTP 標記於第一股互補去氧核醣核酸(cDNA)上,並與微陣 列進行一般之雜交反應(Hybridization),最後再顯現訊號。 微陣列矩陣的訊號來 自核酸標的物所攜帶的螢光顯色基團或顯色基團,利用螢光基團是目前普遍使用 方式,靈敏度高並可作定量分析,但其螢光物質材料費高且需要昂貴的雷射掃描 儀 (laser scanner)讀取訊號與分析。如圖(19)

圖 19 微陣列矩陣影像

現階段,由於包含主動元件的自動化生物晶片(Lab-on-a chip)的技術尚未成 熟,因此晶片反應完成後的影像處理和分析需經過額外的步驟來進行。由於被記 錄的晶片顯像只是類比式(analog)的影像,所以如何將此資料轉換為有用的數 據,亦成為生物資訊學(bioinformatics)重要的應用課題之一。簡單來說,基本的 影像處理,例如segmentation、 normalization 、quantification 等步驟是必需的。

然而,在資料處理和分析的過程中,以上每一個步驟皆會產生無可避免的誤差。

在層層的累積之下, 誤差值可左右實驗分析結果甚巨。此外,在每片晶片高達數 萬個引子樣本內,數值高(在 2 以上)的對比反應(high ratio expression)極有可能是 高斯分佈(Gaussian distribution)下的巧合,也就是假陽性(false positive)的錯誤訊 號。直到目前,這些挑戰尚需有效的方法來具體克服。

附錄二 Program xml Document Type Definition

<!ELEMENT prog (arg*, body)>

<!ATTLIST arg name CDATA #REQUIRED>

<!ELEMENT body(%stmt;)+ >

<!ENTITY % stmt "assign | call | copy | par | table | while | if ">

<!ELEMENT assign (call | copy) >

<!ATTLIST assign id CDATA #REQUIRED>

<!ENTITY % var "tbl" >

<!ELEMENT tbl EMPTY >

<!ATTLIST tbl id CDATA #REQUIRED>

<!ELEMENT hidb EMPTY >

<!ATTLIST hidb

<!ELEMENT copy (hidb)>

<!ATTLIST copy tblid CDATA #REQUIRED>

<!ELEMENT par (task+) >

<!ELEMENT task ((%stmt;)+ )>

<!ELEMENT while ((%stmt;)+ , endWhile )>

<!ELEMENT endWhile (if ) >

<!ELEMENT if (check ) >

<!ELEMENT check EMPTY>

<!ATTLIST check tbl CDATA #REQUIRED row CDATA #REQUIRED col CDATA #REQUIRED

op CDATA #REQUIRED value CDATA #REQUIRED >

<!ELEMENT table (createRow+ | call | get ) >

<!ELEMENT createRow (getValueAt)>

<!ELEMENT getValueAt EMPTY>

<!ATTLIST getValueAt tbl CDATA #REQUIRED row CDATA #REQUIRED col CDATA #REQUIRED >

<!ELEMENT get (hidb)>

<!ATTLIST get tblid CDATA #REQUIRED>

附錄三 平行 k-means 程式

3.1 分散至兩台機器的平行程式

<prog name="parallel_kmeans">

<arg name="inputTable"/>

<arg name="parTable1"/>

<arg name="parTable2"/>

<body>

<table name="seed"> <!—- initial seed table -->

<createRow>

<getValueAt tblid="inputTable" row="1" col="1" />

</createRow>

<createRow>

<getValueAt tblid="inputTable" row="2" col="2" />

</createRow>

<hidb name="poseidon" host="140.113.88.45"

port="1119" path="db"/>

<hidb name="poseidon" host="140.113.88.140"

port="1119" path="db"/>

<hidb name="poseidon" host="140.113.88.45"

<hidb name="poseidon" host="140.113.88.140"

port="1119" path="db"/>

<hidb name="poseidon" host="140.113.88.45"

port="1119" path="db"/>

<hidb name="poseidon" host="140.113.88.140"

port="1119" path="db" />

</from>

<hidb name="poseidon" host="140.113.88.45"

<hidb name="poseidon" host="140.113.88.140"

port="1119" path="db"/>

</call>

</table>

<table name = "seed">

<copy tblid="new_seed" >

<hidb name="poseidon" host="140.113.88.45"

port="1119" path="db"/>

</copy>

</table>

<endLoop> <!-- check end condition -->

<if>

<table name="result">

<call name="table_sub">

<arg name="new_seed"/>

<arg name="seed"/>

</call>

</table>

<check tbl="result" row="2" col="1" op="&lt;" value="0"/>

</if>

</endLoop>

</Loop>

</body>

</prog>

3.2 分散至四台機器的平行程式

<prog name="parallel_kmeans_for4">

<arg name="inputTable"/>

<arg name="parTable1"/>

<arg name="parTable2"/>

<arg name="parTable3"/>

<arg name="parTable4"/>

<body>

<table name="seed">

<createRow>

<getValueAt tblid="inputTable" row="1" col="1" />

</createRow>

<createRow>

<getValueAt tblid="inputTable" row="2" col="2" />

</createRow>

</assign>

<par>

<table name = "result2">

<get tblid= "id2">

<from>

<hidb name="bioserv" host="140.113.88.140"

port="1119" path="db" />

</from>

<to>

<hidb name="poseidon" host="140.113.88.45"

port="1119" path="db" />

<hidb name="ares" host="140.113.88.36"

port="1119" path="db" />

</from>

<to>

<hidb name="poseidon" host="140.113.88.45"

port="1119" path="db" />

<hidb name="hebe" host="140.113.88.126"

port="1119" path="db" />

</from>

<to>

<hidb name="poseidon" host="140.113.88.45"

port="1119" path="db" />

</to>

</get>

</table>

<table name="new_seed">

<hidb name="poseidon" host="140.113.88.45"

port="1119" path="db"/>

<check tbl="result" row="2" col="1" op="&lt;" value="0"/>

</if>

</endLoop>

</Loop>

</body>

</prog>

參考文獻

[1] The Globus Project Web Page. http://www.globus.org.

[2] I. Foster, C. Kesselman, S. Tuecke. The Anatomy of the Grid: Enabling Scalable Virtual Organizations. In International Journal of Supercomputer Applications, 15(3):6-7, 2001.

[3] I. Foster, C. Kesselman, J. Nick, S. Tuecke. The Physiology of the Grid: An Open Grid Services Architecture for Distributed Systems Integration. In Open Grid Service Infrastructure WG, Global Grid Forum, June 2002.

[4] I. Foster, C. Kesselman. Computational Grids. Chapter 2 of "The Grid: Blueprint for a New Computing Infrastructure", Morgan-Kaufman, 1999.

[5] A. Chervenak, I. Foster, C. Kesselman, C. Salisbury, S. Tuecke. The Data Grid:

Towards an Architecture for the Distributed Management and Analysis of Large Scientific Datasets. In Journal of Network and Computer Applications, 23:187-200, 2001

[6] B. Allcock, J. Bester, J. Bresnahan, A. Chervenak, I. Foster, C. Kesselman, S.

Meder, V. Nefedova, D. Quesnel, S. Tuecke. Secure, Efficient Data Transport and Replica Management for High-Performance Data-Intensive Computing. In IEEE Mass Storage Conference, 2001.

[7] I. Foster, C. Kesselman, J.M.Nick, et al. Grid Services for Distributed System Integration. In Computer archive Volume 35 , Issue 6. p.37-46. June 2002.

[8] B. Allcock, J. Bester, J. Bresnahan, A. L. Chervenak, I. Foster, C. Kesselman, S.

Meder, V. Nefedova, D. Quesnal, S. Tuecke. Data Management and Transfer in High Performance Computational Grid Environments. In Parallel Computing Journal, Vol.

28 (5), p. 749-771. May 2002.

[9] Genomes OnLine Database. http://www.genomesonline.org [10] SETI@home: Search for Extraterrestrial Intelligence at home.

http://setiathome.ssl.berkeley.edu/

[11] E. Korpela, D. Werthimer, D. Anderson, J. Cobb, M. Lebofsky. SETI@Home : Massively Distributed Computing for SETI. In Science and Engineering archive Volume 3, Issue 1, p.78-83. January 2001

[12] P. Anderson, J. Cobb, E. Korpela, M. Lebofsky, D. Werthimer. SETI@home: An Experiment in Public-Resource Computing. In Communications of the ACM, Vol. 45 No. 11, p.56-61. November 2002.

[13] J. Graham, L. Kemp, N. Angelopoulos, and P.Gray. Architecture of a Mediator for a Bioinformatics Database Federation. In IEEE Transactions on Information Technology in Biomedicine, Vol. 6, Issue 2, p. 116-122, JUNE 2002.

[14] O. Akinde, H. Böhlen, T. Johnson, L. Lakshmanan, D. Srivastava.Efficient OLAP Query Processing in Distributed Data Warehouses. In Information Systems Volume 28 , Issue 1-2 p.111-135. March 2003

[15] J. Han. OLAP Mining: An Integration of OLAP and Data Mining. In Proc. 1997 IFIP Conference on Data Semantics (DS-7), Leysin, Switzerland, pp. 1-11. Oct.1997 [16] A. Schulze and J. Downward. Navigating gene expression using microarrays. In technology review NATURE CELL BIOLOGY. Volume 3, p.190-195. Auguest 2001.

[17] C.A. Afshari. Perspective: microarray technology, seeing more than spots. In Endocrinology 143: 1983-1989, June 2002.

[18] C. J. Date. An Introduction to Database Systems. /Pearson/Addison Wesley.

[19] myGrid.

A project developing experiments in biology on a Grid.

http://www.mygrid.org.uk/

[20] Asia Pacific BioGRID.

A project created a distributed database for a prototypic DataGrid.

http://www.apbionet.org/grid/

[21] The North Carolina BioGrid project. http://www.ncbiogrid.org/

[22] EUROGRID project. http://www.eurogrid.org/

[23] P. Kacsuk. Parallel Program Development and Execution in the Grid. In

International Conference on Parallel Computing in Electrical Engineering. p.131 Septemper 2002.

[24] C. Lee, D. Talia. Grid Programming Models: Current Tools, Issues and

Directions. Chapter 21 of Grid Computing: Making the Global Infrastructure a Reality.

F. Berman, G. Fox and T. Hey (eds.), Wiley, p. 555-578. 2003.

[25] GGF, Global Grid Forum. http://www.gridforum.org/

[26] K. Stoffel, A. Belkoniene. Parallel k/h-Means Clustering for Large Data Sets. In Proceedings of the European Conference on Parallel Processing EroPar99, p.

1451-1454. September 1999.

[27] Web Services Architecture Working Draft, World Wide Web Consortium (W3C), February 2004. http://www.w3.org/TR/ws-arch/

相關文件