我正在重新实现一个应用程序来支持全国工程竞赛,将其从本地服务器移动到云端。
为了告诉团队他们目前所处的位置,查询的形式为
select 1 + count(*) from team where where score < ?
球队的分数变化非常动态。可能有多达 200 万个团队,我需要每秒处理至少 10 个这样的查询。
通过使用单独的伯克利团队/得分记录数据库,原始版本获得了所需的性能(实际上它已经在 1999 年的硬件中实现了)。Berkeley DB 中有一个“记录编号”功能,它提供了完全正确的功能,而且速度非常快。
Heroku 显然没有办法支持 Berkeley DB。他们的标准数据库 PostgreSQLselect count(*)
使用全表或索引扫描,这太慢了。
关于如何进行的任何想法?我不喜欢 Heroku,但必须转向某种云解决方案。