我需要限制多個客戶的多種服務使用。例如,客戶客戶1可以每月發送最多1000條SMS。我的實現是基於一個MySQL表3列:服務使用限制器實施
date TIMESTAMP name VARCHAR(128) value INTEGER
對每個服務使用(發送短信)一行插入到表中。 value
保存使用次數(例如,如果SMS被拆分爲2部分,則value
= 2)。 name
保存限制器名稱(例如,customer1-sms)。
要找出服務中使用多少次這個月(2011年3月),執行一個簡單的查詢:
SELECT SUM(value) FROM service_usage WHERE name = 'customer1-sms' AND date > '2011-03-01';
的問題是,這個查詢慢(0.3秒)。我們在列date
和name
上使用索引。
有沒有更好的方法來實現服務使用限制?我的要求是它必須是靈活的(例如,如果我需要知道最近10分鐘內的使用情況或當前月份內的使用情況)。我正在使用Java。
在此先感謝
我願意接受完全不同的解決方案。也許一些內存中並沒有使用數據庫。或者使用專門爲此目的創建的專門數據庫。 –