2011-11-09 38 views
0

我們有一個存在於XML文件中的應用程序。除了一個大的XML文件(其行爲像其他文件的索引)之外,所有其他文件都存儲在單獨的文件夾中,並且非常小(它們大多包含關於文檔的元數據(即視頻/ pdf等))。我們應該從XML文件移動到數據庫嗎?

從關係的角度來看,除了與物理存儲在磁盤上的文檔(即通過目錄路徑)相關聯的元數據之外,在數據/對象之間沒有太多關係。所以所有的數據都與文檔相關聯。

除了搜索XML索引文件,所有其他搜索都是通過使用「Windows索引搜索」完成的。

雖然系統是針對未來的單個用戶,但它會更改爲多個用戶,這意味着索引文件將有多個用戶同時更新它。 (其中每個條目包含一些元數據和磁盤上的文件的引用10000項)

另一個要求是讓每個管理自己的文件存放在不同的機器多個索引文件,該文件可能會變得非常大。現在這意味着要搜索/瀏覽我們必須在多臺機器上搜索的內容。我發現擁有一個數據庫可能會解決一些問題,但是有很多工作要到達我們必須解決問題的階段(即創建一個ORM模型,數據庫,存儲庫,命令等)。

我的問題是可以通過其他方式解決其中一些問題,而無需通過數據庫路由?

TIA JD

+2

一切都可以通過許多方式解決。但是,根據我的經驗,對於數據庫來說,XML很少是一種很好的格式,尤其是在需要非順序訪問的情況下;你最終會得到什麼是一個只有內存的序列化格式的數據庫;所有功能都將由您自己編寫。我建議使用sqlite,mysql,mongodb,couchdb ... – sehe

+0

你提到了mongodb/couchdb。會更適合我的域模型,它似乎是與某種類型的文檔相關的非常多元數據? –

回答

2

你可以嘗試原生XML數據庫,以加快XML處理。我已經使用Berkeley DB XML(嵌入式,庫)和eXist(聯網,客戶端服務器,REST)取得了一些成功。特別是,前者解決了用單個索引文件替換遍佈各地的大量小型XML文件的問題,因此它可能會替代您的XML索引文件。後者通過Lucene進行全文搜索。

+0

感謝您的信息。 XML數據庫如何解決併發問題? –

+0

我應該提到我在.net世界,所以XML數據庫和工具都可以工作嗎? –

+0

@JD:我認爲Berkeley DB XML支持鎖定。至於.NET,我不知道,但BDBXML是用C++編寫的(所以你可以用C++/CLI和C#代碼包裝它),而使用REST接口可以查詢eXist。 –

2

這聽起來好像你的工作量正在朝着需要數據庫的方向發展。由於數據已經全部是XML,移動到本地XML數據庫應該是最不具有破壞性的路線。現在流行的產品往往是MarkLogic,如果你能負擔得起,eXist如果不能。 (我對兩者都沒有興趣,但知道兩者都滿意)

+0

對於描述的數據大小,MarkLogic的免費「Express」許可證可能就足夠了。 –

相關問題