Amazon dynamodb 通过在数据库中保存已排序和筛选的记录ID,防止dynamodb扫描

Amazon dynamodb 通过在数据库中保存已排序和筛选的记录ID,防止dynamodb扫描,amazon-dynamodb,nosql,Amazon Dynamodb,Nosql,我正在创建一个无服务器的应用程序,并正在寻找各种方法来绕过使用dynamodb进行昂贵的扫描。我想到了一个解决办法,但不确定从长远来看是否合理 首先,我通常将记录保存在表中: { recordId1: {...recordData}, recordId2: {...recordData}, recordId3: {...recordData}, } 然后我设置了一个调度lambda函数,该函数从一个表中获取所有记录,并为排序和过滤器的每个组合保存一个ID列表。此函数将在添加或删除记

我正在创建一个无服务器的应用程序,并正在寻找各种方法来绕过使用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函数可能需要花费高昂的成本

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

所以,你发明了在关系数据库中实现索引的方法databases@Lashane你能详细说明你的意思吗?您是否建议只使用关系数据库?我想让这个项目没有服务器。只要谷歌一下RDBMS中的索引实现,他们是如何更新索引的,它就会告诉你怎么做