簡體   English   中英

就SQL而言,使用XML有什么優勢?

[英]What is the advantage of using XML with regards to SQL?

我已經看到了一些關系數據庫,其中XML直接反映了SQL,並且我想知道是否有人可以為我提供一些見解,說明為什么人們使用XML而不是其他選擇。 我的印象是,這更是個人喜好,但是一位同學告訴我,XML被認為“更好”,即在某些情況下更有效。 因此,我想向大家提出這個問題,因為坦率地說,我想發表第二意見。

問題:什么時候使用XML代替ColdFusion或PHP(或其他替代方法)? 有哪些固有的優勢使它成為更理想的選擇?

例如,XML可能是這樣的:

<data>
<dataObject name="Test">
    <primaryKey>Num</primaryKey>
    <foreignKey dataObject="Test" key="Num"/>
    <datums>
        <datum type="integer" key="itemRecnum" label="Item Recnum" data="required"/>
        <datum type="string" key="status" label="Status" data="required"/>
        <datum type="integer" key="idnumber" label="ID Number" data="required"/>
    </datums>
    <constraints/>
</dataObject>
</data>

因此,在SQL Server中,每個數據庫都具有1-1對應關系,每個數據類型都是一列。

有人可以解釋一下使用XML從數據庫中提取的優點是什么嗎? 這里到底發生了什么,為什么要在CF或PHP上使用它? 以及如何從數據庫中推入和拉出?

如果您將兩者混在一起怎么辦? 也許有人會將Coldfusion用於插入,而xml僅用於視圖?

XML是一種數據存儲機制。 ColdFusion和PHP是數據處理語言。 XML不會從數據庫中提取數據。 人們使用XML存儲數據的原因很多。 這里討論了一些原因: 為什么我會選擇在關系數據庫中存儲和處理XML?

PHP和XML與XML一起使用,ColdFusion也是如此。 如果您希望將XML轉變為最終用戶的東西,則可能需要考慮XSLT

XML的目的是將數據存儲在人類可讀的平面文件中(XML在實體的文本命名中具有巨大的開銷。而且,它不是人類可讀的,它是一種傳輸介質),易於訪問的形式。 訪問XML數據“存儲”的方法非常健壯,並且一直在不斷發展,包括Microsoft提出的“ XQL”提議-一種等效於SQL的用於處理XML數據存儲的SQL提議。 XML非常簡單,以至於它本身可以用作數據庫–實際上,它非常靈活:您可以通過標簽和不同的庫數組無限地自定義XML實現。 另外,如果您的數據庫損壞了,那么您幾乎可以在任何文本編輯器中打開它-畢竟是文本文件。 但是,XML有一個主要缺點:處理數據時,它比SQL慢,並且需要更多資源才能運行。

關於ColdFusion和XML,您可以在這里閱讀

XML勝出的地方是,如果您有一個分布在20個表中的有關業務對象(比如一家酒店)的數據,並且您想將該數據發送給將數據組織成具有不同結構的16個表的人。 XML使您可以在一條消息中捕獲有關對象的所有信息,這與數據庫的設計無關,並且可能符合某些行業標准(例如OTA),並將其加載到設計完全不同的其他數據庫中。

另一方面,如果您的XML與SQL數據庫設計的表和列緊密地聯系在一起,那么您就不會從中獲得太多價值。

IA / B使用緩存的XML產品文件測試了一個非常繁忙的站點,而不是緩存了一個非常大的查詢,而緩存了較小的單個查詢,到目前為止,XML每次都表現最差。 讀取文件所花費的時間找到特定記錄,然后解析出數據,這使服務器癱瘓。 如果您手頭有一個數據庫並且希望建立一個數據密集型網站,那么我強烈建議您避免使用XML,除非您出於某種目的將XML存儲在數據庫中。

如果您確實正在為網站尋找平面文件系統,那么我會研究NoSQL數據庫(例如MongoDB或CouchDB),其中有一些Coldfusion驅動程序和CFC已被編寫為可與這些系統一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM