私のアプリで、ユーザーに文字列を入力するように頼んだとします。ユーザーは文字列を複数回入力できます。ユーザーが文字列を入力するたびに、その日と一緒にデータベースに記録します。異なるユーザーが入力したとしても、多くの文字列は同じである可能性があります。ホームページでは、ユーザーが任意の期間 (過去 45 日間、または 2012 年 1 月 10 日から 2012 年 1 月 30 日の間など) の上位 n 個 (たとえば 50 個) の文字列をクエリできるようなインターフェイスを提供する必要があります。SQL の場合、次のようなクエリを記述できます。
select string, count(*)
from userStrings where day >= d1 and day <= d2
group by string
order by count(*) desc
limit n
ユーザー クエリごとに、クエリ時にレコードを処理できません。何百万ものレコードが存在する可能性があります。期間の制約がなかった場合は、次のようなことができたはずです-UserStringのクラスを作成し、個別のユーザー文字列ごとにその一意のオブジェクトを維持し、ユーザーが入力した文字列に対応するオブジェクトを取得し、そのカウントを増やします[アプローチしても、データストアはすべての UserStrings オブジェクト (〜 100000) を処理し、上位 n を返す必要があると想定しているため、それ自体が非常に重いクエリになる可能性があります]。
JDOを使用しています。私の明らかな目標は、アプリ エンジンのコスト (CPU + データ) を最小限に抑えることです。
ありがとう、