2010-02-20 37 views
2

我正在一個網站上工作,我需要能夠跟蹤廣告展示。我的環境是使用SQL Server DMBS和潛在Memcached的IIS的ASP.Net,因此沒有太多的訪問數據庫。我還必須考慮可伸縮性,因爲我希望這個應用程序成爲一個全球性的應用程序(保持我的手指交叉和工作我的屁股)!因此,這裏的情況:關於廣告印象,大規模插入SQL插入的最佳實踐是什麼?

  • 我的客戶將支付X量Y的廣告展示次數
  • 這些廣告印象(目前,只有文字廣告),然後將一個特定的頁面上顯示。
  • 的頁從Memcached的服務,減少了趟DB
  • 當顯示的廣告,需要有一個「+1」滴答加到印象記入數據庫

所以這個困境是:我需要能夠爲每個廣告印象計數器添加「+1」刻度標記,但是我無法在每次加載廣告時運行該SQL語句。我需要以某種方式在會話(或其他地方)中存儲該「+1」展示次數,然後每X分鐘,幾小時或每天運行一次批次。

請記住,可擴展性是這裏的一個重要因素。任何建議,你都有不勝感激。

回答

2

我的每個Web場服務器上部署的SQL Server Express版本,並依託服務代理,提供跟蹤審計中央服務器看到項目的交易與此有關。由於場中的每臺服務器都更新本地SQL實例,因此它們可以像天空一樣高度擴展。 Service Broker保證接近實時的可靠交付。我已經看到了Web場每秒處理300-400請求上平均,全天候在很長一段時間,並與服務代理的排隊性質能夠在底吸納每秒5000-7500命中尖峯幾個小時,並恢復在合理的時間內,不會造成審計損失,並積壓得到控制。

如果你真的希望擴展併成爲下一個MySpace的,那麼你應該從how they do it學習,基於隊列的異步,分離處理是遊戲的名稱。

+0

我同意,這似乎是爲Service Broker量身定做的。 – RBarryYoung 2010-02-20 21:00:53

1

東西你能做的就是增加計數到永久性的少店面,並定期(每1分鐘,5分鐘,小時..)同步到您的更可靠的數據庫。

如果你的臨時存儲出現故障,你失去的時間有些短週期命中計數;這樣做的最終結果是,在極少數情況下出現故障時,付費廣告獲得一些免費印象。

您可以發送命令到內存緩存「+1原子方式增加該值」。你也可以做一些事情,比如在每次顯示廣告時寫一行文本到平面文件,並讓你的「每5分鐘」同步作業旋轉日誌,然後統計文件中剛旋出的所有行。

相關問題