2013-08-27 102 views
1

一點背景信息:之前的項目經理因未能按時交付項目而被解僱。我幾乎沒有體驗編碼,但我現在領導團隊完成網站。圖像數據庫管理

該網站本身是類似的易趣在哪裏添加項目出售。圖片和文檔將與該項目相關聯,但託管在圖片上傳時創建的文件夾中。開發團隊問我「如何管理與物品清單相關的文件夾」。每個項目會上傳1到10個圖像/文件,並且將在一個時間點列出的1000-2000個項目之間(如果不是更多)。

從環顧四周,我相信最簡單的解決方案是通過項目編號命名文件夾並在MySql中列出參考。每件商品都有單獨的商品編號,並且不應有重複。是否有更好的文件夾管理解決方案?

+0

您可以將圖像命名爲MYSQLID-pictureNumber.jpg在一個巨大的文件夾或類似的東西。當你考慮它時,文件夾只是文件名的通用前綴。 –

回答

1

你想要小心的是,大多數文件系統限制在一個文件夾中可以存儲多少項目;在Linux上,這個限制一般在30000左右。由於你給出的數字在那裏應該沒有什麼問題,但是你仍然應該計劃系統是未來的證明。

我發現它是非常有用的存儲圖像的散列。例如,創建圖像的SHA1哈希值,例如:cce7190663c547d026a6bf8fc8d2f40b3b1b9ea5。在此基礎上散列與文件夾的幾級的圖像,然後存儲在目錄結構:

cce/719/066/3c5/cce7190663c547d026a6bf8fc8d2f40b3b1b9ea5.jpg 

這使用哈希的前12個字符,以形成一個文件夾結構,4級深,那麼文件名是整個哈希。根據需要增加或減少文件夾深度。這允許您存儲相當多的圖像(((16^3)^ 4)* limit)而不會觸及文件系統限制。然後將該路徑保存在數據庫中,並提供有關圖像及其屬於哪些項目的其他信息。這種方法還可以有效地減少數據存儲的重複次數,因此永遠不會存儲兩次相同的圖像。

+0

謝謝大家的提示。關於文件夾級別的問題。 而不是使用圖像的散列,使用項目編號是否合適? I.e.項目/ ITEMTYPE/YearUploaded /用戶名/ ItemNumber _#。JPG? –

+0

這並不壞,但它不會*跨文件夾很好地分發文件。使用散列,你可以確信你的文件夾將包含大致相同數量的文件。在你的方案中,大多數文件夾可能只包含一個文件,並且突然包含大量文件。它可能不會超過限制,但更有可能。 – deceze

0

過去如果目錄中文件太多,文件系統的性能就會下降,所以人們普遍認爲限制在任何目錄中的1,000個項目。

嘗試圍繞item_id(填充)創建一個目錄結構,因此#1002003可能是001002003,它可以在001/002/001002003.jpg中找到。

由於您要爲每個項目存儲多個圖片,因此您可能需要添加一個圖層。 001/002/003/001002003_1.jpg。

在最終目錄中使用完整的ID作爲項目的名稱(001002003.jpg,而不是003.jpg)。它稍後會派上用場。

希望有所幫助。

2

正如先生所說,圖像可以用productid-docid-imageid-timestamp重命名 如果圖像沒有經常檢索,那麼經常將圖像存儲在db中作爲blob並以不同名稱打印圖像可能會有所幫助。