2011-11-03 217 views
0

我有權訪問返回XML或JSON的Web服務。由於Web服務調用非常昂貴,因此我想將XML/JSON存儲在數據庫中,以便更快地訪問數據。我有的問題是,如果我只是將整個XML/JSON存儲在字段中,還是應該設計一個以規範化方式表示XML/JSON的數據庫模型?數據庫設計:如何在數據庫中存儲XML/JSON?

如果我只需要有XML/JSON數據可用,那麼將它作爲字符串保存在字段中即可。

但是,我知道我只需要提取某些XML/JSON文檔 - 所以我kindda需要能夠查詢此。對於簡單的查詢,如果我在XML文檔中的標題標籤之間搜索「hello world」,可以使用類似LIKE %<title>hello world</title>%的內容。但我認爲我的一些查詢可能超越了字符串匹配(例如,超過某個數字或日期等)。所以我覺得我需要在數據庫中正確地建模這些數據,並使用XML/JSON中的值填充它。不過,這將成爲一個痛苦的練習。

我應該做什麼的提示?也許有一個我沒有考慮的選項。

回答

1

這聽起來好像你需要將XML/JSON文檔轉換爲一組不同的字段。

有DB可以返回本機​​JSON,但你通常會使用應用程序層。

我通常存儲純XML/JSON時,真的沒有明顯的需要訪問個別字段。例如,我將以XML格式將控制數據存儲在BLOB字段中,因爲我通常不需要搜索一個特定的控制字符串。

您可能想要考慮的一件事是使用像MongoDB或Couch這樣的noSQL解決方案來存儲JSON。您可以將JSON字符串直接拉出並訪問各個字段。

像MongoDB和Couch這樣的文檔數據庫可以讓您靈活地本地存儲和檢索JSON文檔,以及訪問和搜索JSON文檔中的各個字段,而無需事先知道文檔將如何操作使用。實際上,它只是將關係數據轉換爲結構化文檔並將結構化文檔轉換爲關係數據。

當我將XML直接存儲在BLOB中時,任何可搜索的數據都將位於BLOB外部的字段中。磁盤空間相對便宜,這是一個小規模的非標準化。當然,無論何時更新JSON/XML文檔,您都必須確保更新字段,但在應用程序層很容易實現。

+0

Brian - MongoDB如何幫助我使用JSON?我仍然可以從MySQL中取出XML/JSON,然後查詢每個項目。問題是我想我想基於XML/JSON中的某些值進行查詢。 – StackOverflowNewbie

+0

只需抽出我需要查詢的數據是否是一個好主意 - 然後將其餘的XML/JSON留在字段中?我覺得這會構成重複的數據 - 因此沒有正常化。 – StackOverflowNewbie