2012-12-13 55 views
1

我開始一個新項目,我有一個關於數據的約束。基本上,「數據」實際上是一組以精心定義的層次結構組織的文件。如何將文件系統看作數據庫?

客戶端希望能夠使用Windows文件資源管理器訪問這些文件,同時在程序中加載數據以獲取信息的精煉視圖。該程序將加載文件,解析它們並提取所需的信息。它應該能夠對文件執行某種查詢(修改的最後日期,大小,某種類型的所有文件)

我的問題是能夠結婚那兩個視圖。

我的第一個想法是使用一個數據庫來備份文件系統,該數據庫包含有關文件的路徑和一些元數據......但是如果有任何類型的文件系統抽象來實現這種事情,我就會徘徊不前?或我可以使用的基於文檔的數據庫?

基本上我想盡可能少地處理文件系統(但也許我不應該)

希望這不是太模糊了...... 感謝。

回答

2

聽起來更像是架構問題給我。

我建議在表示層和數據源之間使用抽象層以避免耦合到實際文件。建立通用接口兩個文件訪問和數據庫訪問。您的應用程序不需要知道它是否正在處理文件或數據庫數據,甚至不需要知道未來更改可能需要的其他來源。實施存儲庫設計模式應該在這裏有用。另外,我建議使用通用數據訪問對象,這些對象完全獨立於基礎文件/數據庫結構,這將允許您嘗試不同的數據訪問方式,而無需觸及應用程序本身。

至於面向文檔的數據庫,我沒有這方面的經驗。但RavenDb,例如,是具有可用出的現成的.NET支持,是值得一試一個流行的開源產品。

考慮到應用程序的雙重訪問以及通過Windows資源管理器,您可能需要考慮使用FileSystemWatcher來檢查是否更改了任何文件,然後使用更改的內容更新相應的數據庫條目。

如果這是一種可行的方法,當然,它將非常強烈地依賴於數據更改的頻率。如果文件過於頻繁地編輯,這可能會使數據庫訪問負擔過重。您應該儘早檢查可能的性能影響。

對於其他的想法,我們可能會需要更多的信息。 但至少這些想法可能會給你一個出發點。

相關問題