2016-07-24 190 views
2

我正在考慮將工作目錄(即遞歸/嵌套文件夾/文件)存儲到mysql數據庫中。創建文件夾/文件結構

這個想法是有一個'projects'表和一個表,其中包含樹中所有文件夾/文件及其相應的路徑(varchar)。
查詢項目應該返回文件夾和文件作爲我將用於在客戶端構建樹的字符串路徑列表(+一些元數據)。

我應該提到,我的工作目錄中的'文件'記錄是代表mongodb數據存儲中的json文件的元數據(它們將網頁描述爲複雜的嵌套json)。文件記錄將比文件夾更頻繁地查詢(它們根本不會被查詢),並將鏈接到其他表。文件與我的應用程序有不同的含義,而這些文件夾僅對我的工作目錄很重要。

我的問題是什麼是最好的選擇:

  • 存儲文件和文件夾在不同的表
  • 存儲文件和文件夾在同一個表(該記錄將接近相同),並使用FK上有2條記錄「文件夾」/「文件夾」
+0

簡短回答:「經典」關係型數據庫(包括mysql)在這方面並不是很擅長。這是一個很好的鏈接:[在mySQL中管理層次數據](http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/)。兩種方法a)將* full *路徑存儲爲列。這種「僞文件夾」具有簡單,快速的優點。 b)使用3個表格:1)文件夾,2)數據,3)將數據鏈接到文件夾(可能是n:m關係)的「引用」。 – paulsm4

+0

@ paulsm4感謝您的提示。我嘗試用mongodb初始化實現,將遞歸嵌套樹存儲爲json,但發現缺少事務相當麻煩。你會提出什麼樣的存儲系統? – Trace

回答

2

簡短回答:「經典」關係數據庫(包括mysql)在這方面不太擅長。這是一個很好的鏈接:Managing hierarchical data in mySQL

另一方面,Wordpress是一個應用程序,它可以完成許多你想要做的事情 - 它在mySql(或者等價的RDBMS)中完成了所有的工作。

here,特別看看"taxonomies"部分。

另一種方法可能是查看graph database,如neo4J

'希望有幫助...

+0

感謝您的建議。我的樹也將代表網站結構;我認爲一個簡單的樹結構就足以開始。 – Trace