我有名为“Users”的AWS DynamoDB表,其中的哈希键/主键是包含电子邮件的“UserID”。它有两个属性,第一个叫做“Daily Points”,第二个叫“TimeSpendInTheApp”。现在我需要在桌面上运行一个查询或扫描,这将使我获得最高分的前50名用户和在应用程序中花费最多时间的前50名用户。现在这个查询将每天由cron aws lambda执行一次。我正在尝试为此查询或扫描找到最佳解决方案。对我而言,成本比速度/效率最重要。由于维护二级全局索引或点上的本地索引可能是昂贵的操作,因为我必须为这些索引分配读取和写入单位,这是我想要避免的。 “用户”表格最多有100,000到150,000条记录,平均来说它将有50,000条记录。我最好的选择是什么?请建议。扫描DynamDB表或查询辅助全局索引或本地索引(什么是最佳解决方案)
我在想,我的第一个选择是,我可以扫描过滤表达式上的某些点(例如5000)以上的记录的整个表格,在此扫描后,如果找到50个或50个以上的记录,数值并取前50条记录。如果此扫描结果不是或结果非常少,则减小滤波器表达式值(例如3000),然后再次执行相同的扫描操作。如果筛选表达式值(例如2500)返回的记录太多,如5000或更多,则减少筛选表达式值。这甚至是可能的,我想它也需要处理分页。在具有50,000条记录的表上扫描是否可取?
任何意见或建议将有所帮助。提前致谢。