我們正計劃創建一個廣告網絡。與任何正常的在線廣告網絡一樣,我們會爲發佈商/廣告客戶提供廣告投放,報告(統計信息)和一個小瀏覽網站。廣告網絡基礎設施意見? MySQL的? Memcached的? MongoDB的?
因爲應用程序將獲得巨大的印象(廣告投放)的要求,我們的應用程序必須能夠快速將數據記錄的曝光和點擊,登錄次數和點擊次數的計數爲每個出版商/廣告客戶。然後,這些數據將用於監控發佈商的展示次數/點擊次數並生成報告。
現在,我們已經計劃將基於PHP和MySQL(InnoDB的)整個系統,PHP,eAccelerator在,Memcached的(只是爲了保存有效的廣告)
問題/問題
縮放。 ..
我認真覺得我們的應用程序是不會很好地擴展時,我們的業務增長。
MySQL插入和更新肯定會成爲瓶頸。還有如何將這些全部分發給多個服務器,以便我們的應用程序可以根據負載進行擴展。
任何人都可以請幫助提出特別的印象記錄和計算應用的結構? MongoDB會以任何方式成爲更好的解決方案嗎?
任何幫助將不勝感激。
謝謝您的回覆。是的,我們正在照顧田野的大小。遵循你的基準測試和Redis的建議。 您是否認爲爲每個廣告請求做這件事是一個壞主意? $ rdate = gmdate('Y-m-d',time()); ('uid ='$'''')AND =''''''') ; ((uid ='$ field [3]'AND type ='adv')OR(uid ='$ uid'AND type ='pub')$ res = mysql_query(「UPDATE reports SET impressions = impressions + 1 WHERE )AND rdate ='$ rdate'「); – theanalyst
使用'mysql_query'是一個超級壞主意,所以是的。PDO將是一個更好的選擇。除此之外,爲了獲得最佳性能,您需要*單列*唯一密鑰,而不是複合密鑰。使用'OR'實際上可能比兩個單獨的查詢更慢,這些查詢匹配一個'UNIQUE'索引,而MySQL查詢優化器可以在每個索引上做得更好。作爲我所說的一個例子,儘管如此,您將有一個'type_id'列設置爲儘可能最小的類型來表示,即使是'SMALLINT',而不是具有大量重複數據的可變長度字段。 – tadman
謝謝你的建議。這會有很大的幫助。你的言論讓我對我的舉動更加大膽。現在我積極地向正確的方向發展。謝謝! – theanalyst