2011-10-18 23 views
1

我開發一個應用程序,MySQL和用戶首選項的計劃更新?

  • 在表中存儲的電子郵件地址(用戶)。
  • 存儲用戶想要留在表格中的天數。
  • 當天數達到時,將用戶從桌面上取走。

我真的不知道如何處理這個,所以這裏是我的問題:

  1. 每一秒,我都通過了,因此目前存儲在時間每個表項中的應用程序檢查,比方說,time_left列?
  2. 如果我預計會有大量(10,000多個)用戶,那麼不會(1)效率低下嗎?
  3. 如果不是(2),那麼爲這樣的任務實現的最佳算法是什麼?
  4. 我在這裏想要做的是什麼名字?在編寫腳本之前,我想對它做更多的研究,所以我需要一個好的搜索查詢來開始。

我打算在Perl中編寫此腳本,儘管我願意接受關於語言選擇,框架等方面的建議......我實際上是新開發的Web開發人員(在後端和前端),所以我會很感激,如果你能精確地給我建議。

謝謝!

*發帖後,Topener問了一個有效的問題:

爲什麼你會存儲用戶,如果他們將不會要求?

假設用戶正坐在數據庫中。

假設我從用戶添加到數據庫的每隔5分鐘開始使用用戶的電子郵件地址(所以如果用戶的輸入出生在下午2點到10月18號,用戶將被訪問在2:05,2:10等)。

如果用戶決定他們想要出在10天內的數據庫的,這意味着它們的條目被正常訪問(從2:00 PM-October 18每5分鐘),直到2:00 PM-October 28.

所以要澄清,基於這種情況:

該系統將不得不不斷比較當前時間和用戶的到期日,不是嗎?

回答

0

您可以編寫一個單獨的程序/腳本,以設定的時間間隔進行刪除查詢。如果你在Linux機器上,你可以創建一個cron作業來完成它。每秒鐘執行此操作可能會對較慢的機器和較大的表格變得非常耗費資源,但我認爲這不會成爲簡單刪除查詢的問題。

2

你不應該存儲time_left變量,你應該存儲vaildTo。這樣,無論何時從數據庫請求用戶,您都可以檢查它是否有效。

如果沒有,那麼做任何你想要的。

這種方法不會讓你做任何cronjobs,或將花費你extramload。

+0

考慮到我描述的場景,爲什麼會要求用戶?而且這還沒有告訴我何時或應該如何檢查用戶何時應該從數據庫中刪除。 –

+0

爲什麼你會存儲用戶,如果他們不會被要求?此外,我希望你能比較兩個日期? –

+0

答案是的,是的。但是這仍然比每分鐘運行一次更有意義 –

1

嘿Mr_spock我喜歡Topener的上述答案。而不是存儲用戶希望有效的天數,存儲用戶希望被移除的那一天。

添加像validToDate場,這將是一個DATETIME字段類型,你可以像

查詢從表名刪除其中validToDate < = NOW()

其中

  • 斜體文本是SQL查詢
  • tablename是表的名稱問題
  • NOW()是一個有效的SQL函數返回當前DATETIME
  • validToDate的類型是DATETIME

這有什麼都效率SQL服務器的承諾,我認爲這是相當不錯的一個領域。