我需要限制多个客户的多种服务使用。例如,客户客户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。
在此先感谢
我愿意接受完全不同的解决方案。也许一些内存中并没有使用数据库。或者使用专门为此目的创建的专门数据库。 –