我正在做一個任務,我要考慮兩種解決方案來存儲網頁中使用的文本。場景:一個講座有一個網頁,一個主題有幾個講座。爲什麼我應該使用XmlType而不是關係數據庫?
第一個選擇是一個正常的關係數據庫,這是正常的。
另一種方法是使用兩個「常規」屬性的表,另一個使用Oracle的XmlType。在這個XML文件中,一個主題的所有數據將被保存。所以xml文件將包含幾個講座的數據。 我需要一些優點和缺點替代#2。 爲什麼我應該考慮使用替代#2而不是#1?
我正在做一個任務,我要考慮兩種解決方案來存儲網頁中使用的文本。場景:一個講座有一個網頁,一個主題有幾個講座。爲什麼我應該使用XmlType而不是關係數據庫?
第一個選擇是一個正常的關係數據庫,這是正常的。
另一種方法是使用兩個「常規」屬性的表,另一個使用Oracle的XmlType。在這個XML文件中,一個主題的所有數據將被保存。所以xml文件將包含幾個講座的數據。 我需要一些優點和缺點替代#2。 爲什麼我應該考慮使用替代#2而不是#1?
在您的第一個選擇中,您將不得不爲存儲網頁的列使用LOB
數據類型。如果您使用VARCHAR2
,則會丟失格式。
在XMLTYPE
列的第二個替代方案中,您可以選擇LOB/CLOB
存儲,或者您可以選擇將其拆分爲對象關係表和視圖。 XMLTYPE
未存儲在外部文件中。
第二個替代方案將使您能夠使用XPath表達式搜索XML文檔併爲XML標籤編制索引。所以這比第一個選擇更強大。
從Oracle 11g開始,您還可以在'XMLTYPE'列中使用'BINARY'存儲。我相信它現在是默認的存儲選項。 – wweicker
將數據存儲在XML中的唯一原因是如果您使用XML接收數據並希望將其作爲一個連續的「東西」容器處理。試圖查詢XML有時是一個挑戰,無論如何用Oracle的所有功能都可以這麼做。我已經完成了,但是表演處罰可能很粗糙,或者你必須跳過這些步驟才能獲得正確的索引。
對於一個小的角度來看,我要去參考喬爾在這一個:Back to Basics - Joel on Software
我能想到的(把我的頭頂部)有幾個原因:
如果數據本質上不是關係數據,而是等級和不規則數據,XML可能比嘗試將數據強制爲表格結構更合適的存儲選項。
如果您將數據存儲爲XML,則將其轉換爲XHMTL可能會更容易顯示。
如果數據源於並需要在使用XML格式的創作系統中進行編輯,您將通過以XML格式存儲和使用它來節省大量的數據轉換。
由於每堂課是一個獨立的「頁」在您的應用程序,但是,它似乎更有意義,我每次演講分成單獨的XML「桶」,而不是將它們存儲在一個單一的XML片段。
這是一個很好的問題。我想不出一個理由;但是我對XML有一種理性的仇恨。 – Ben