2009-02-13 98 views
2

使用XML而不是RDMS有缺點嗎?我問這個問題的原因是因爲我的數據更自然地由XML結構表示,而不是RDBMS。我最初想到的是storing the data in relational database,但是關係數據庫缺乏處理樹狀數據結構的靈活性,這讓我感到不安。所以我正在考慮將數據存儲在XML中。XML與RDMS相比的優點/缺點

我擔心的一件事是性能損失。雖然RDBMS可以處理大型數據集,但我不確定XML是否可以這樣說。另外,數據庫查詢已經相當完善,相當容易使用和構建,那麼XML查詢又如何呢?我不知道。

我在做.Net應用程序。 RDBMS的

回答

2

在我看來,這些都是需要考慮的因素

  1. 哪個適合你的應用程序需要更緊密地
  2. 多大,你需要處理的數據集?
  3. 您是在應用程序之間傳輸數據還是要查詢它?


一旦這些因素考慮,我建議你決定使用RDBMS,如果你有大量的數據處理和查詢的需求和XML,如果你需要導出數據或應用程序之間傳送。我還想建議你考慮一下你的數據和完整性需求的限制,比如尼克建議的。

我在這方面沒什麼經驗,但這是我在學校從別人那裏聽到的。

一切順利。

0

兩大固有的優點是:

  1. 索引。大大提高性能。
  2. 約束。您可以定義有助於維護數據完整性的元素之間的關係。

請記住,您可以將xml放入sql服務器並使用xpath進行查詢,因此根據數據的形狀,您可能可以獲得兩全其美的好處。

4

您不應該將XML與RDBMS進行比較,因爲這是2種互補的技術; XML不應被視爲或被視爲RDMBS的替代品。

RDMBS用於以一致的方式存儲大量數據。 RDBMS應該注意數據的一致性等...

例如,XML可用於不同計算機系統之間的數據交換,但不應該用於長時間存儲大量數據一段的時間。
Xml不允許你像RDMBS那樣處理數據一致性;它沒有處理事務等等...... Xml實際上只不過是一種文本文件,它以某種結構化方式包含數據。

+0

+1 - 它」更像是將數據庫與文件進行比較 – annakata 2009-02-13 08:48:41

+1

-1原生XML數據庫已經走過了一個很長的路,您可能想查看一些當前流行的數據庫。它們支持典型RDDMBS數據庫所具有的所有功能,但能夠根據需求進行索引,而不必預先定義結構和數據。它們遠非「僅僅是一個文本文件」。 – 2011-04-14 22:30:31

0

你可以有兩全其美的,你的數據可以被存儲在數據庫中,這已經是一個更好的解決方案。由於數據庫更快,更安全,具有備份和恢復,回滾,管理工具等......

這聽起來好像你的數據本質上是橫向的,數據庫可以被強制存儲層次結構,沒有太多的問題。

當涉及到使用您的數據,如果你提取它作爲Xml。我知道如果你使用的Sql Server可以直接使用,不太確定Oracle。

+0

SQL數據庫有一些附加組件,可使節點像原生XML數據庫一樣運行。因此,從這個意義上講,您仍然可以在使用SQL數據庫的同時獲得XQuery和XML索引的強大功能。雖然這對我來說似乎有點倒退。 – 2011-04-14 22:33:06

1

事物的RDBMS提供的XML不,或多或少的重要性排列:

  • 執法定義的架構(儘管這當然是適用於XML)爲多作家
  • 支持
  • 原子事務
  • 參照完整性
  • 良好定義的查詢語言
  • 來選擇能力通過索引imize訪問,編譯查詢等
  • 基於角色的安全
  • 觸發器,存儲過程,計算列等

另外,您不需要把整個數據庫裝載到內存中之前你可以訪問任何它。

XML是一種對象模型的好的序列化格式。對於可以使用XPath訪問的相對自由形式的數據模型,尤其是如果要通過XSLT將該數據轉換爲XML或HTML,這非常有用。它具有標準和平臺無關的優點。

但是如果你用它過於雄心勃勃,你迅速進入一種領土導致你寫XML是多麼可怕的咆哮。 (我在跟你說話,Jeff Atwood。)

5

如果你正在使用XML數據,那麼幾乎沒有問題你應該查看Native XML數據庫。

最流行的原生XML的兩個數據庫服務器MarkLogic和同時存在提供非常強大和高效的索引機制,以及許多的這個名單上提到的功能。

事實上許多搜索應用MarkLogic服務器急劇出執行SQL數據庫,尤指大的XML數據集中。這是因爲它專門爲使用XML而構建,並且知道索引它的最佳方式,而沒有規範化SQL也不會。

基於目前的市場走勢可以看出,儘管SQL是不會消失的,它的definently失去市場份額的NoSQL方法,尤其是在以文檔爲中心的數據而言。

進一步的細節----

大部分,即人類互動與是非結構化的和heigharchal數據。規範化和將這些數據歸一化爲平坦的關係結構不僅耗時,從信息架構的角度來看,它也迫使我們以非自然的方式查詢數據。

當前的Native xml數據庫允許輕鬆添加大量未經修改的(但已通過模式驗證的)數據並進行有效索引。

使用xpath查詢這些文檔是遍歷和提取​​數據的更自然的方式,因爲查詢是結構的表示。

它也很容易使用XQuery和XSLT進行轉換。

最終結果是開發人員的投資回報率更高。你寫更少的代碼,並獲得更多。我以前主要在php/sql應用程序中編寫。一旦我們將我們的架構轉移到Native XML和XQuery,我就可以用更簡單高效和簡潔的XQuery替換成千上萬行代碼。

如果您有預算(〜250k),請查看MarkLogic服務器。它是有史以來最令人印象深刻且可擴展的數據庫系統之一,並且都是Native XML。據我所知,它支持事務,回滾等,以及SQL提供的所有其他功能。

存在(http://exist-db.org)是具有開源項目:

  • 充分的XQuery/XPath的/ XSLT支持
  • 高效的索引機制
  • 內置全文搜索
  • 支持REST/WebDAV的/ SOAP/ATOM/XML-RPC
  • 版本控制