私はユーザーがパラメーターを提供するWebアプリケーションに取り組んでおり、これらは最大2,000万行のデータベースから上位1000項目のリストを作成するために使用されます。一度に上位1000のアイテムすべてが必要であり、ユーザーの観点から、このランキングが多かれ少なかれ瞬時に発生する必要があります。
現在、ユーザー定義関数を備えたMySQLを使用してデータのスコアリングとランク付けを行っており、PHPはそこからデータを取得します。1M行のデータベースでテストすると、これには約8秒かかりますが、最大2,000万行のデータベースの場合でも、約2秒のパフォーマンスが必要です。最大50人の同時ユーザーに対して適切なスループットが保証されるように、この数はさらに低くすることが望ましいです。
MySQLであるかどうかに関係なく、このデータを可能な限り効率的に処理できるソフトウェアを使用して、あらゆるプロセスを受け入れることができます。プロセスの機能と制約は次のとおりです。
- スコアリングプロセスに関連する各行のデータは、アイテムあたり約50バイトです。
- DBへの挿入と更新はごくわずかです。
- 各スコアは他のスコアから独立しているため、スコアを並行して計算できます。
- パラメータとパラメータ値の数が多いため、スコアを事前に計算することはできません。
- この方法は、複数の同時ユーザーに対して適切に拡張できる必要があります
- サーバーの数の観点から、これに必要なコンピューティングリソースは少ないほど良いです。
ありがとう