通过在数据库中保存已排序和已过滤的记录ID来阻止dynamodb扫描

时间:2017-04-18 16:32:43

标签: amazon-dynamodb nosql

我正在创建一个无服务器的应用程序,并正在寻找方法绕过使用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倍。

我想到的一些潜在问题:

  • id的列表可能会变得非常大,但是一旦他们命中了,我就会知道 一定的大小,我可以把它们分成更小的列表 sortFilterCombination1Part1 sortFilterCombination1Part2
  • 将所有记录转换为lambda函数可能成本很高

这是一个好的设计模式吗?我在任何地方都没有看到它,所以我想它可能会有一些漏洞。

0 个答案:

没有答案