2010-09-29 85 views
0

我正在嘗試開發基於Web的數字資產管理應用程序。我打算在Codeigniter中使用mysql作爲db。這是一個受歡迎的地區報紙。他們將輸入1000條條目和TB數據作爲每日噸信息。存儲大量數據的複雜關係的最佳方式php/mysql

會有不同的內容類型,如媒體,個性,事件,問題,雜項等......所有這些將被分類。事情都將會相互關聯。例如,「奧林匹克」活動將與人物表中的所有參與者以及與此相關的所有媒體相關聯。我打算實現使用這種複雜的相互連接的表「連接」

id - subject - connection - type 
------------------------------------------- 
1   98   190   media 
2   283   992   issue 
3   498   130   info 

所以,當一個人需要的情況下奧運...所有的連接都將從此表進行填充。 「主題」列將具有「奧林匹克」的ID,並且連接將具有所連接條目的ID。

有沒有更好的方法來做到這一點?內容將不得不基於100個不同的標準進行搜索。但最終用戶會少得多。只有報紙(Max 100)的記者才能訪問這個應用程序,因此流量或負載將會非常少,但所存儲的信息量將非常高。我想聽聽有經驗的開發人員,因爲我沒有太多經驗來做這樣的大事。

回答

3

這是一個複雜的問題,因爲您需要了解很多有關調整和配置MySQL數據庫以處理負載和數據的問題。由於用戶數量如此之少,您在連接方面會很好,因此執行時間是真正的瓶頸。

如果您在32位服務器上,表中的最大行數爲42億和4GB,而不進行任何配置更改。你可以增加4GB的桌面限制,但據我所知42億行的限制是32位服務器上的最大限制。

您的表格看起來好像不錯,但我會將「type」更改爲ENUM,因此數據不是文本(減少了整個表格的大小)。

您必須正確編制此表,並從它看起來像是在主題上鍵入。如果沒有用連接查詢硬數字/示例查詢,將很難猜測此查詢的運行速度,但如果它的索引正確並具有較高的基數,則應該沒問題。

您可以隨時在PHP和MySQL之間拋出一個Memcache層來緩存一些結果,以便在執行類似搜索時可以獲得更好的性能。有了「100個不同的標準」,儘管你很有可能會碰到數據庫。

相反,你也可以看看一些NoSQL選項,比如MongoDB,這取決於你的數據可能更適合。 「

+0

」相反,你也可以看看一些NoSQL選項,比如MongoDB,這取決於你的數據可能更適合。「 http://highscalability.com/blog/2010/9/5/hilarious-video-relational-database-vs-nosql-fanbois.html – iddqd 2010-09-29 14:00:36

相關問題