2010-07-28 24 views
0

我有一個網絡應用程序,根據用戶權限及其警報設置(每天,每週,每月或無)發送每日,每週的電子郵件更新。 。任何體系結構提示,用於發送每日,每週需要計算的電子郵件更新

發送給某個帳戶(可能有多個用戶)的每封電子郵件都需要一些數據庫調用和計算。因此,隨着用戶數量的增加,使這些每日/每週的電子郵件非常昂貴。

寫這些服務是否有一些常規提示?我正在尋找一些架構技巧或模式,而不是像電子郵件傳送能力那樣的主題。

+0

這是這個數據庫的全部用途嗎?還是它也做實時交易處理? – 2010-07-28 22:55:50

+0

數據庫大小約20GB(快速增長),並被網絡應用程序和一些其他後臺應用程序使用(我們存儲和分析大量數據 - 重要數據庫)。關於這個設置的提示也會很棒。 – rksprst 2010-07-28 22:58:45

+0

電子郵件的時間依賴性如何?進入電子郵件的內容是否需要更新至第二或更寬鬆? – 2010-07-28 23:37:16

回答

0

如果您不得不處理非常大的信息集,那麼我會在處理時間之前緩存數據,以便在特定的時間可以從處理週期中省略數據庫的「計算」。有效地打破處理過程,以便在對信息進行預定處理之前完成數據庫密集型工作。當需要真正發送這些電子郵件時,我想可以快速處理非常大的音量,而無需進行大量的調整。當然,我也不知道我們在這裏談論的是什麼樣的音量。

您也可以對應用程序進行線程處理,以便將處理數據進一步分割爲邏輯塊,以減少必須一次處理的所有數據量,具體取決於您的情況,它可能會精簡事物,我會正常不建議進入線程,除非有充分的理由,並且您可能有線程。至少,使用後臺工作者類型的線程化過程,並根據您如何細分數據來引發一些問題。

當處理異常時,請記住現在讓那些處理失敗,通過記錄某種類型或通知來處理它們,然後繼續前進,您不希望發生錯誤以便進一步處理,所以我當然,你可能已經計劃好了。

此外,異步發送您的電子郵件,以便它們不阻止處理,這可能是一個明顯的遵守,但有時候這樣的小事情被忽略,並且可能在發送大量電子郵件時造成相當的瓶頸。

最後,預先測試一個合理的負載,並拍攝好容量。

0

您可能想查看sql報告服務。

您可能必須將當前設置轉換爲sql報告格式,但作爲回報,您將獲得用於安排報告生成的整個管理界面,允許用戶修改報告輸入,緩存歷史/當前報告以及用戶可以管理自己的電子郵件訂閱。

http://msdn.microsoft.com/en-us/library/ms160334.aspx

相關問題