前一段時間,我實現了一個帶有全局預定義目錄結構(不可修改)的gdrive /類似於dropbox的應用程序,每個用戶都可以使用該目錄結構,但不限於(意思是:也能夠添加和管理自定義文件夾)。數據庫中許多相關數據的相同數據
靜態目錄結構是這篇文章的原因,因爲我不滿意目前的處理機制,並且會非常高興,如果你能給我一個很好的建議,我可以改進它/改變這個更好。
目前我使用一個MySQL數據庫,其中有一個表'文件夾',這(驚喜,驚喜)包含所有文件夾(預定義和自定義)。因此它具有文件夾名稱,所有者和父文件夾的字段。
因爲預定義的結構非常龐大,所以我不想爲每個用戶添加它到表中,因此我只用此結構的一個實例爲文件夾表添加並將「owner」字段設置爲NULL 。因此,要查找用戶的所有文件夾,我只需要查詢將此特定用戶作爲所有者或不屬於任何人的那些文件夾。
這種方法目前效果很好,但對於文件夾的每個用戶屬性有一些主要缺點,例如,我想在每個目錄中顯示文檔計數 - 包括子目錄 - 這是每次使用非常慢的遞歸查詢完成的。如果我只有每個用戶文件夾結構(例如,通過添加一個額外的「文檔計數」字段,可以更好地處理這個問題),每當文件夾中的文檔發生某些事情時可以使用查詢掛鉤來更新該字段結構體)。
您對這個設計選擇有什麼看法?我是否應該保持這種狀態,只需添加一個包含每個用戶文件夾屬性的附加表(例如像user_id,folder_id,document_count,last_modified,[我可以想到的任何其他屬性])?如果直接在系統上處理文件夾(通過使用系統命令)並將它們保存在數據庫之外,這會是一種更好的方法嗎?或者你有沒有其他的想法(或許是更合適的數據庫?),這可以用更方便的方式進行管理。
感謝您的幫助! :-)
多個用戶可以使用特定的文件夾? –
多少個文件夾?用戶?文件?等等?你在說什麼?數百萬,或只有數千。只有成千上萬,我建議建立一個邏輯結構,而不是擔心性能。對於數百萬人,我們來看看一些實際的模式和查詢。 _使用這兩種方法之一,您可以編寫性能不佳的查詢._ –