2012-02-01 33 views
3

我正在爲可以爲客戶處理1000個圖像的網站工作。說每個用戶20,000個文件,大約200個用戶(希望很快就會有1000個)。爲MySQL 10M記錄中的每個用戶提供的所有用戶或單獨的表的一個表db

  • 圖像通過在MySQL的InnoDB數據庫vFile(唯一ID)記錄描述所有權和權限,在文件夾樹中的位置,對S3的物理文件的位置,大小等
  • 用戶可以創建,刪除表示,重新排序等這些vFiles
  • 每個用戶只能更改他擁有的vFiles

數據庫困境是:

  • 所有vFile記錄在一個表中或爲每個用戶
  • 單獨的表。

二的解決方案,似乎有幾個優點:

  • 的查詢會爲vFiles搜索一個用戶只,第二個解決方案上的分貝降低負荷。
  • vFiles的操作(如重命名,刪除,重新排序)將影響更小的表。

您的想法將不勝感激。

+0

爲什麼不直接使用S3的權限? – ajreal 2012-02-01 10:46:19

回答

1

第二個解決方案似乎沒有考慮將來對網站功能所做的更改。例如,如果您希望在以後的日期允許用戶共享圖像,或允許多個用戶對文件具有不同權限級別的圖像池,那該怎麼辦?如果您使用解決方案#2,添加這些功能會導致大量重複條目。一般來說,如果你有相同的信息,我已閱讀的大部分內容建議將它放在一張表中,然後添加一個鏈接表以提高靈活性。在鏈接表中選擇與user_id x匹配的項目應該非常快,即使有第三列以獲取額外的過濾權限。另外,即使您有大量單表搜索,向相關列添加索引也會大大加快搜索過程。我能想到的唯一情況是#2可能更好,如果你鎖定了桌子。

雖然我不是專家,所以我想聽聽其他人的想法。

0

使用下表結構

User Id ownership, permissions, location size etc imageFileIndex 

在一個表 而在另一個表

imageFileIndex vFile 
相關問題