資料庫的xml
1. 有XML資料庫么
以前有,大概3、4年前吧,
當時Xml剛剛興起,大家都在用,
不過Xml不能很好地管理數據,
所以現在只限用於前台頁與前台數據的分離,
或是把從資料庫讀出來的數據存在XML中以備使用,
Xml現在已經不用於存儲大量數據了。。
2. 什麼是xml資料庫
開始討論XML和資料庫之前,我們先回答許多人都遇到過的問題:「XML是資料庫嗎?」
如果僅按資料庫這個術語的本質來看,XML文件就是資料庫,它是數據的集合。在許多方面看起來它和其他文件沒什麼區別 -- 無論如何,每個文件都含有某種類型的數據。作為一種「資料庫」格式,XML有一些優勢:例如,它是自描述的(所用的標記描述了數據的結構和類型,盡管缺乏語義),可交換的(portable)(Unicode),能夠以樹型或圖形結構描述數據。同樣它也有缺點,例如,它顯得有些繁瑣,由於要對它進行解析和文本轉換,所以數據訪問速度較慢。
一個更有用的問題就是在較為寬松的意義上,XML及其周邊技術是否可以算作「資料庫」 -- 資料庫管理系統(DBMS)。答案是「在某種程度上是(sort of)」。從正面來說,XML提供了許多資料庫所具備的東西:存儲(XML文檔), 模式(DTD, XML schema,RElAX NG 等等), 查詢語言(XQuery, XPath, XQL, XML-QL, QUILT等等),編程介面(SAX, DOM,JDOM)等等。從反面來說,它缺少一些作為實用的資料庫所應具備的特性:高效的存儲,索引,安全,事務和數據一致性,多用戶訪問,觸發器,在查詢多個文件等等。
因此,盡管在數據量小、用戶少和性能要求不太高的環境下,可以將XML文檔用作資料庫,但是卻不適用於用戶量大、數據集成度高以及性能要求高的作業環境。
XML適合於用作所謂「資料庫」的一個好例子就是 .ini文件 -- 它包含應用程序的配置信息。與其寫一個處理以逗號分隔(comma-delimited)的文件的解析器,開發一種小型的XML語言並寫一個解釋它的 SAX程序要容易的多。此外,XML允許使用嵌套的實體,而逗號分隔的文件(comma-delimited files)很難做到這點。然而,說它就是資料庫還很勉強,因為它是線性讀寫的,而且僅用在程序開始和結束時。
比較適合於XML資料庫的一些復雜的數據集就是個人通訊錄(名字,電話號碼,地址等),或用於描述瀏覽器書簽以及用Napster偷來的MP3。然而,由於dBase和Access之類的資料庫物美價廉,即使在這種情況下似乎也沒有多少理由把XML文件作為資料庫使用。XML的唯一真正好處就是數據的可交換性(portable),由於有越來越多的工具可以用來對資料庫進行XML序列化(serializing),這一點好處似乎也要打些折扣。
3. 關系資料庫中如何存儲xml數據
XML文檔的一個普通存在的問題是如何持久保存(Persist) XML文檔。在一個關系資料庫中存儲XML文檔是一個非常常用的方法,因為當前關系資料庫的使用非常廣泛。
將XML文檔插入到資料庫中不是簡單的方法,這其中需要很多其它額外的考慮。現在我提供了一些技巧,你可以使用這些技巧在關系資料庫中存儲XML文檔。
1、文檔表:
一個最簡單和容易的方法是,在一個具有單一文本域的資料庫中建立一個表,由此你可以在表中存儲XML數據。由於這些特定資料庫和特定XML文檔,這一文本域可以是一個二進制大型對象(BLOB,binary large object)。有些資料庫需要存儲的是大量的BLOB數據而不是文本。
這一方法的優點是,將數據存入表中變得相當簡單,而且重新獲得也同樣很容易。這種文檔表的管理也很方便。
這種方法的缺點在於你將可能無法進行一些有用的文本搜索,並且在放置特定文檔時也會碰到困難,因為沒有任何方法來識別表中的文檔;
2、主鍵表:
下一個比較復雜的方法是使用一個主鍵表(keyed table)。這種方法與文檔表非常相似,但此時你的表中包含兩個域:一個唯一的主鍵和XML文檔。使用這種方法,你既可以具有存儲和獲得整個XML文檔的簡潔性,也可以使用一些管理這些唯一主鍵的復雜操作;
建立主鍵的一種通用方法是使用XML文檔中的MD5求和檢驗。請記住如果你想在表中包括多份XML文檔,這一方法遠不足夠。在這種情況下,你可以添加額外的key fields標識鍵列。
與文檔表一樣,主鍵表很容易執行,它可以在表中查找特定的文檔。然而,與文檔表一樣,你仍然不能執行任何文本查詢;
3、有限離散表:
這一方法更加復雜,但它給你帶來更多的靈活性。使用有限離散表,你可以建立用於存儲有限分散的XML信息的表,這是什麼意思?請看以下的例子:
假設你具有一個順序文檔。在文檔的根部(Root)有一個Order元素,這一元素包括CustomerInfo, ItemInfo, 以及hippingInfo元素。在資料庫中,你可以建立一個OrderDoc表,表中包含一個ID域,一個CustomerInfoId域,一個ItemInfoId域,一個ShippingInfoId域。然而,你還可以建立一個CustomerInfoId表,一個ItemInfoId表,一個ShippingInfoId表。這些表都包含很多信息相關的各自的ID域,這些信息包括用戶,選項,郵寄信息。在這一表中,還包含著其它額外的等級。比如,CustomerInfo表包含AddressInfo域,即從AddressInfo表中引用的入口。
這種方法的優點是,允許你更緊密地建立XML數據的模型。這種方法使得你進行數據的一些成熟的查詢。它也使得數據的使用性更強,因為你不再需要XML分析器來讀取數據。
不足之處是這種方法需要更多的精力來開發和維護。這意味著每一文檔都需要解析成分離的部分,然後存儲在資料庫中。如果這一過程沒有得以很好管理,有可能會丟失一些數據。而且,這也意味著,當從一個資料庫中獲得一個XML文檔時,你不得不連接這些分散的部分。
4. 資料庫中的xml
關系資料庫是2維的,它表示數據的方式與XML表示數據的方法一至
5. 資料庫中保存的xml與xml文件
在資料庫中保存:
sqlserver可以在sql語句中,對欄位中的xml進行xpath檢索。
如:select * from xxx where xpath(xxx.xmlfield, "/book/title") = "abc";
函數名我記不清了,大意就是這樣了。
可以統一備份方案。
方便查找。
大量記錄時,性能很高。
大小有限制,4G
xml文件:
優點:與資料庫比想不出什麼優點。
編程時要讀資料庫,知道文件名,再去打開文件IO,解讀。還要記得關掉。
大量的文件,性能很差。一個目錄里有幾萬個文件,基本就完蛋了。非常慢。
備份時要另外設計文件備份方案。
大體上就這些。
6. XML和資料庫的區別
資料庫操作的話,畢竟是比較慢的,相對於xml來說,是有點復雜一些。如果是復雜多的數據的話,你就可以使用資料庫。但如果是很少的數據交互就使用xml
7. 從資料庫中讀取數據,創建xml文件
如果是Sql2005以上版本就簡單了
SELECT TOP 10 * FROM dbo.UserInfo
FOR XML PATH('UserInfo'),ROOT ('UserList')
就會生成以下XML
PATH裡面的字元串生成行標簽
ROOT生成根標簽
<UserList>
<UserInfo>
<UserName>administrator</UserName>
<Age>21</Age>
<NickName>小張</NickName>
......
</UserInfo>
<UserInfo>
<UserName>administrator</UserName>
<Age>21</Age>
<NickName>小張</NickName>
......
</UserInfo>
<UserInfo>
<UserName>administrator</UserName>
<Age>21</Age>
<NickName>小張</NickName>
......
</UserInfo>
......
</UserList>
8. 如何把資料庫的表弄成xml格式
方法:
點擊Excel左上角來按鈕,在彈源出的選項中,點擊「另存為」
或者直接在Excel中按下快捷鍵F12
2、選擇最後一項:其他格式。
3、接下來,重命名一下文件名,並選擇文件類型為:
XML數據(*.xml)
4、點擊「保存」按鈕,會出現如下錯誤警告:
因為工作簿不包含任何XML映射,所以無法保存任何XML數據。
單擊「幫助」以獲取詳細信息。
5、這個原因是我們的工作簿只是普通的Excel數據,的確沒有做過XML映射,或者Excel數據也不是從XML文件導入的。
這時,我們嘗試另存為另一種文件類型:
XML電子表格2003(*.xml)
6、點擊保存按鈕。
7、這時會彈出一個兼容性對話框,問你是否保持工作簿的這種格式。
8、點擊「是」,即可將Excel保存為XML格式的文檔了。
我們使用軟體打開這個XML文檔(例如通過Chrome瀏覽器),發現格式正常,Excel數據也全在裡面。
9. 資料庫文件是什麼格式 xml么
XML有以下幾個優點:
•
數據是自說明的
•
數據可用標准工回具加以處理
•
數據可用標准工具查答看
•
用樣式單可容易地生成同樣數據的不同視圖
XML格式的第一條主要好處是數據是自描述的。每個數字的意義是清楚的,且不會錯誤
10. 通過XML和資料庫存儲的區別
這是風牛馬不相及的兩個概念,他們的結構,應用范圍是完全不同的內,目前的資料庫基本上容都是關系型資料庫,以sql與oracle為代表,都是非常大型的,可以進行數據的海量存儲;而xml主要解決的是數據在網上傳輸標準的問題,把原來各種各樣的數據孤島可以通過xml這座橋梁連接起來,所以打個比方,資料庫就好比是盛數據的桶,而xml則是數據傳輸轉換的橋梁,所以資料庫是資料庫,xml是xml,二者是截然不同的,當然二者也存在非常緊密的聯系,畢竟都是處理數據的工具,就是很多其他的數據格式可以通過xml輸入到資料庫中,資料庫中的關系型數據也可以通過xml轉化成其他的數據格式