2012-07-08 154 views
1

我需要保留服務器上所有用戶活動的歷史記錄。 活動涉及用戶提交數據或一個過程。 該應用程序需要爲約5萬個併發用戶設計。在數據庫中保留用戶歷史記錄

什麼是最好的方法。如果我創建一個新的歷史表,它會不會填充行考慮最壞情況下的龐大數字?

這樣做的最佳方法是什麼?

只是一個比喻;考慮一個擁有50k併發用戶的圖書館,我必須保持每個用戶的圖書入住登記結帳的歷史記錄。考慮到用戶的數量,它會不會失控嗎?

回答

0

我想有一些遺漏的細節,你會怎麼處理這些數據?你可以拿着它沒有索引?或者你可以存檔舊數據(舊的可以在一個小時前)。編寫SQLDB的速度非常快,但是你設計了一個50K的併發用戶活動,我建議你在內存中執行一些活動,並在用戶活動中將其刷新到db中。

+0

SQL的寫入時間有爭議,但SQL能處理多少? 數據需要保存,索引不重要。只有在具體查詢用戶的歷史記錄時纔會使用此數據。 – 2012-07-08 06:52:44

+0

建立你最糟糕的情況,並試一試。 – 2012-07-08 08:28:56

+0

每秒增加50000行...會耗盡桌子嗎?那麼select語句怎麼樣 – 2012-07-08 12:25:12

0

性能最佳,最安全的方法是在源表上使用觸發器實施歷史記錄表。這是在一個封裝對象(表)中實現安全性和實際業務規則的最佳方式。但是,如果您目前還沒有編寫服務器端例程的實踐,或者您沒有可以爲您生成代碼的數據字典系統,那麼將服務器端轉換爲單一功能可能並不實際。

在代碼中實現歷史記錄表具有將您保留在最熟悉的語言和習慣中的常見好處,但這意味着除了通過應用程序之外,您不能訪問數據庫。我當然不能在這裏制定一個通用規則,這個決定最好由設計團隊根據當前的情況和預期的未來需求作出。

+0

如果你是設計團隊呢? – 2012-07-08 06:54:01

相關問題