2011-07-31 43 views
0

我想用php/mysql爲我的文件創建flex/actionscript目錄視圖。我想分享一些想法:應該使用什麼設計來保存文件信息

1)我想創建表(在MySQL中)「文件」和另一個表「文件夾」,當用戶在我將要求所有數據從「文件」和用戶名='東西'的「文件夾」。但問題是,我會在表格中創建很多條目。例如,如果我將有100個用戶,並且每個用戶可以創建100個條目(文件或文件夾),這意味着我將在表內獲得10000個條目。

2)我的第二個想法,我認爲更安全的方法是創建表「用戶」,其中將設置ID,用戶名,密碼,...,文件,文件夾。在文件(文本格式輸入)將上市有關文件的信息,他們將通過這樣的「*」符號是分紅:

id*file name*size(in kbytes)*path*status 
example: 
15*test.exe*150*/root/*private 
16*test2.exe*200*/root/folder1/*public 
17*test3.exe*5600*/root/folder1/subfolder/*private 
... 

一旦當用戶LOGES在彎曲時,此信息將被outputed和ActionScript會抓住它。但問題是,當我將編輯1個文件信息(例如1文件名「test.exe的」到「editedtest.exe」)我將加載回MySQL中的所有數據:

15*editedtest.exe*150*/root/*private 
16*test2.exe*200*/root/folder1/*public 
17*test3.exe*5600*/root/folder1/subfolder/*private 

現在,這裏只有3文件信息,但可以有超過1000.

所以你怎麼看,我該如何解決我的任務?還是更好的做法,我只是不知道?請寫下你的建議和想法。

回答

1

我將使用術語「文件系統」來表示每個用戶的文件/文件夾結構。

不要害怕你的數據庫中的大量行,數據庫旨在處理這個問題。

而且,我 T公司提供你許多優點:

  • 延遲加載:在你的目錄樹,你可以只獲取當前用戶的根目錄/文件,當用戶想要去一個子文件夾,你可以加載這個子文件夾的內容。如果將整個文件系統結構存儲在一個字符串中,即使只需要一行,也必須加載整個結構
  • 單元更新:對於數據庫,可以在不加載完整文件系統結構的情況下更新文件/文件夾
  • 更少的代碼:您不必分析文本字符串以重新創建路徑,您可以將其「按原樣」存儲在數據庫中
  • 索引:如果您每行存儲一個文件/文件夾,則可以索引這些來加速搜索。如果將整個文件系統結構存儲在其所有者行中,則無法高效地執行搜索。
+0

是的,我同意,這是更好地做文件系統的方式,但你肯定在數據庫行的大金額將不會有問題?如果我的Web應用程序會成名,並且很多人會開始使用它(例如1000人),則每個應用程序都會創建大量文件/文件夾。那麼你確定數據庫能夠正確快速地使用100萬條線(將來看)嗎? – Volter

+1

是的,絕對。 mysql團隊宣佈他們擁有5000萬條記錄數據庫:http://dev.mysql.com/doc/refman/5.5/en/features.html(搜索頁面中的「可伸縮性」以查找信息)。保持良好性能的關鍵是良好的索引和結構良好的數據模型。 –

+0

非常感謝你的建議。我會像你說的那樣做。再次感謝您的建議。 – Volter

0

如何做到:

  1. 保存在MySQL哪些用戶可以訪問哪些子目錄。

  2. 編寫一個PHP腳本,用於讀取Flash應用程序查詢的目錄。檢查目錄是否屬於用戶。返回該目錄的所有文件。在Flash中顯示導航按鈕的方式與Web服務器在directoy列表頁面中顯示按鈕的方式相同,例如:http://www.css-zibaldone.com/articles/directory/examples/3/3.html(以搜索apache目錄列表爲例)。

  3. 該方法將執行每個請求的1個目錄遍歷。然後,您可以通過遍歷來返回當前目錄及其直接子目錄文件來優化這種情況。或者將結果緩存在硬盤上的某些文件中。

我發現AJAX文件瀏覽應用程序:http://www.ajaxfilebrowser.com/

相關問題