扫描 AWS DynamoDB 的替代方法?

Tob*_*non 2 database amazon-web-services amazon-dynamodb aws-lambda

我知道不推荐扫描 DynamoDB,这是不好的做法。

假设我有一个食品订购网站,我想对所有用户进行每日扫描,以找出上周谁没有订购食品,以便我可以向他们发送电子邮件(仅举个例子)。

这将对数据库提出一些非常高的需求,尤其是对于庞大的用户群。

是否有我缺少的这些计划扫描的替代方法?或者在这种情况下扫描是工作的最佳工具?

Jen*_*ens 6

这个问题有很多不同的可能答案。通常,所有这一切都始于一个简单的事实,即执行此类操作的最佳方式取决于实际细节以及您尝试优化的内容(成本、延迟、持续时间等)。

由于这似乎是“每周一次”的事情,我猜延迟和“工作”持续时间在优先级列表中并不高,但成本可能很高。

下一个要考虑的重要事情是实现的复杂性。例如:如果您的服务只有 100 个用户,我不会理会任何更复杂的解决方案,只需进行扫描即可。但如果您的服务拥有数百万用户,这可能不再是一个好主意。

出于这个答案的目的,我将假设您的用户群已经变得太大而无法进行扫描。在这种情况下,我可以想到两种可能的解决方案:

  1. 添加一个单独的索引,使您可以轻松地“查询”最后一个订单日期。
  2. 使用 S3 备份

第一个应该是不言自明的。正如 DynamoDB 文章中经常描述的那样,您应该定义“访问模式”并围绕它们构建索引。这里的优点是您仍在 DynamoDB 中操作,缺点是增加了成本。

我的首选解决方案可能只是将表的计划备份到 S3,然后在其他地方处理备份。可能是您编写的自定义工具或某些允许处理大量数据的 AWS 服务。这可能是最便宜的解决方案,但处理时间可能不会“超快”。

我期待着这个有趣问题的其他解决方案。