複数のお客様に複数のサービスを使用することを制限する必要があります。たとえば、顧客の顧客1は、月額1000 SMSを送信できます。一つの行がテーブルに挿入される(SMSを送信する)毎にサービス利用のためサービス利用制限ツールの実装
date TIMESTAMP name VARCHAR(128) value INTEGER
:私の実装は、3列と、ワンMySQLのテーブルに基づいています。 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を使用しています。事前
:-)高く評価されています。データベースを使用していない可能性があります。または、この目的のためにのみ作成された特殊なデータベースを使用します。 –