我正在创建一个无服务器的应用程序,并正在寻找方法绕过使用dynamodb进行昂贵的扫描。我想到了一个解决方案,但从长远来看,我不确定它是否合理。
首先,我会将记录保存在表格中:
{
recordId1: {...recordData},
recordId2: {...recordData},
recordId3: {...recordData},
}
然后我设置一个预定的lambda函数,它从表中获取所有记录,并为每个排序和过滤器组合保存一个ID列表。添加或删除记录后,此功能将运行。
// I figure I'll make the ids for this table a hash of the object
// containing the sorts and filters, these ids are just for the example.
{
sortFilterCombination1: [record3, record2, record1],
sortFilterCombination2: [record3, record3, record1],
}
然后,一旦用户进入列表页面,我将获得整个ID列表并批量获取记录的第一页。然后更多批量获取后续页面。这将阻止我每次用户点击列表页面时都必须进行扫描。对于这个网站,我想象记录不会经常添加,可能每天10-20倍。
我想到的一些潜在问题:
sortFilterCombination1Part1
sortFilterCombination1Part2
等这是一个好的设计模式吗?我在任何地方都没有看到它,所以我想它可能会有一些漏洞。