2008-10-22 64 views
2

CouchDB和原生XML數據庫(如eXist)之外,哪些數據庫可以存儲和查詢未結構化和半結構化數據?我已經交了許多不同格式的數據(XML,JSON,YAML,CSV,一些自定義格式),我需要合併和處理,但在關係數據庫中開發模式將是時間 - 消耗和困難。可以處理半結構化數據的數據庫?

主要是,我正在尋找開源解決方案。另外,在某些時候,我想讓這些數據可用。

我知道將所有這些數據轉換爲通用格式來處理會有一些開銷。 XML前端有一些很好的選擇:eXist-db和BerkeleyDB-XML似乎有很好的XQuery支持。另外,雖然還很年輕,但CouchDB看起來很有希望,它具有簡單的「文檔」格式。

我看過的其他途徑是OODBMS,如ZODB和db4o;編寫一些簡單的解析腳本,然後將結果記錄對象「按原樣」存儲。之後的問題在於查詢它們; OODBMS似乎沒有很好的查詢引擎歷史。

我不喜歡的是「blobs-in-relational-db」解決方案。看起來像一個黑客,並沒有真正考慮到數據的演變,FT索引等。

有沒有其他解決方案我沒有遇到過?

回答

-1

微軟SQL Server有一個XML列式開始於2005年

0

如果你真的存儲非結構化數據 - 或者你打算不基於文檔的結構指數 - 那麼我想全文像Lucene這樣的搜索引擎將對你很有價值。 developerWorks用Lucene處理XML有一個較老的但內容豐富的article

+0

數據是半結構化的,但結構通常不匹配任何其他文檔/文件。 – 2008-10-22 22:44:02

1

大多數現代RDBMS都支持xml數據類型,認爲xml文檔是表字段中的值,XPath/XQuery從值中檢索數據。類似地,您可以使用CLOB數據類型來表示一大塊字符(即非結構化文檔);在這種情況下,Oracle,SQL Server和其他人可以擴展來在這些字段中執行文本搜索。

很酷的是,這些半結構化/非結構化的搜索工具是作爲可從sql訪問的操作符實現的,因此您可以將這些搜索的結果與您構造的查詢混合;爲客戶端應用程序提供一致的關係表示。在一對夫婦的項目中,我們在Oracle數據庫中存儲了原生XML數據,並使用標準SQL視圖將數據投影爲結構化數據。

1

如果你想要非常通用的東西,你可以使用RDF存儲。藉助RDF,您可以構建一個圖形,這對於半結構化數據來說是一個很好的抽象。您只需給圖表提供數據固有的結構。在這種情況下,紙張Querying RDF Data from a Graph Database Perspective(或slides)可能是一個有趣的閱讀。

更簡單的方法是使用圖形數據庫(如neo4j)更直接地使用圖形抽象。這是一個開源項目(我是其中的一部分)。圖形數據庫不會將您的數據與特定應用程序綁定在一起。OODB傾向於這樣做。而且它也不會強制您使用必須適合數據的靜態模式。