2013-10-11 73 views
0

什麼是最好的方式來設計數據庫在MySQL的圖像託管網站,這將減少負載較高的服務器上的高流量網站。爲Image Hosting網站設計數據庫的最佳方式?

這將成爲只讀數據庫。 這就是爲什麼我計劃使用:MYISAM數據庫引擎與獅身人面像更快的全文搜索。

斯芬克斯最適合加入/聯合查詢嗎?

CASE - 1:

#######Database: image_host########## 

/////////////table name : image//////////// 

id (int)(11) (auto-increment) 
hash (varchar)(32) 
name (varchar)(255) 
og_name (varchar)(255) 
size (int)(11) 
datetime (datetime) 
user_id (int)(11) 
nsfw int(1) default 0 
verified int(1) default 0 


///////table name : image_categories/////// 

id (int)(11) (this is from image table) 
category_id (int)(3) 

///////table name : categories///////// 

category_id (int)(3) 
category_name (varchar)(255) 

///////table name : image_user/////////// 

id (int)(11) (this is from image table) 
user_id (int)(11) 

/////////table name : users//////// 

user_id (int)(11) 
username (varchar)(255) 
email (varchar)(255) 
paswword (varchar)(32) 

CASE - 2: 把一切在一個表中

#######Database: image_host########## 

/////////////table name : image//////////// 

id (int)(11) (auto-increment) 
hash (varchar)(32) 
name (varchar)(255) 
og_name (varchar)(255) 
size (int)(11) 
datetime (datetime) 
category_name (varchar)(255) 
username (varchar)(255) 
email (varchar)(255) 
paswword (varchar)(32) 
nsfw int(1) default 0 
verified int(1) default 0 

會有數百萬條記錄的用戶會上傳圖片。我正在尋找基於性能的解決方案,因爲每天會有數百萬次讀取。 我期待得到

在一個查詢中,圖像的ID,散列,名稱,日期時間,用戶名,電子郵件,類別,大小,nsfw都可以嗎?

你有什麼建議? 謝謝

+0

如果是我,我會爲後端使用現成的產品,如Gallery3或Coppermine(我認爲這兩者都使用MySQL)。我喜歡Gallery3,因爲它是非常可定製的 - 儘管你確實遇到了一些Yukky EAV的東西。 – Strawberry

+0

謝謝,但我正在尋找定製的東西。 – AMB

+0

嘿,無論如何漂浮在你的船上;-) – Strawberry

回答

2

真正的高流量圖像託管CND與原始服務器一起工作,如果您在CDN上請求某些內容,CDN會在原始服務器上執行相同的請求。它都是用HTTP標頭處理的,它們甚至沒有數據庫。

在你的情況下,我認爲這取決於很多實際的事情來選擇完美的數據庫結構。我會使所有的用戶名和密碼字段二進制。

更有趣的問題是,關於複製,分片,集羣,引擎(MyISAM/Aria for FULLTEXT搜索,InnoDB for references)。

Google對於數據庫正常化因爲這對於引用和集成非常重要。當然你可以加入這些表格。只有分區/分片或集羣時要小心,因爲有不同的規則和引擎是首選。

考慮其他數據庫也是爲了您的目的,比如MongoDB。

如果這是關鍵業務,您應該考慮諮詢數據庫專家。

+2

如果OP用於第二種表創建方法,則爲NoSQL MongoDB +1。 – DarkBee

+0

我從來沒有聽說過cdn上的數據庫,你的意思是在雲端?全文搜索我正在計劃使用獅身人面像,我打算使用myisam,因爲這將只用於讀取sql數據,並且不會在數據庫上執行任何寫入操作。 mongo db是比mysql更好的解決方案嗎? – AMB

+1

當我第一次閱讀*圖像託管網站將減少負載較高的服務器上的高流量網站* - 我認爲這正是CDN所做的。但他們不使用數據庫。他們只是從你的服務器請求一次,然後從他們的交付,直到我們重新驗證文件或發送GIMS或直到緩存到期。 我woulda把登錄的東西等在MySQL InnoDB和NoSQL中的文件,文件導向的數據庫在這種情況下更快。 – DanFromGermany

0

對我來說,你必須使用MyISAM,如果所有的數據都在一個表格中,但是如果你在同一個表格中有圖像和類別,那麼它會更快。
我的觀點是,如果你有用戶名或類別搜索,那麼有1或2表.. ..不是3(圖像和用戶)會更快。如果您不關心使用類別和用戶名進行搜索,那麼最好使用3個表格。不要忘記INDEXES

+0

是的,myisam +獅身人面像是要走的路,謝謝 – AMB

相關問題