Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 扫描AWS DynamoDB的替代方案?_Database_Amazon Web Services_Aws Lambda_Amazon Dynamodb - Fatal编程技术网

Database 扫描AWS DynamoDB的替代方案?

Database 扫描AWS DynamoDB的替代方案?,database,amazon-web-services,aws-lambda,amazon-dynamodb,Database,Amazon Web Services,Aws Lambda,Amazon Dynamodb,我知道扫描DynamoDB是不可取的,是一种不好的做法 比如说,我有一个食品订购网站,我想每天扫描所有用户,找出谁在上周没有订购食品,这样我就可以给他们发送电子邮件(仅举一个例子) 这将对数据库提出一些非常高的要求,特别是在拥有大量用户的情况下 除了我错过的这些预定扫描,还有其他选择吗?或者在这种情况下,扫描是工作的最佳工具吗?这个问题有很多不同的可能答案。通常情况下,所有这些都是从一个简单的事实开始的,即这样做的最佳方式取决于实际的细节和您试图优化的内容(成本、延迟、持续时间等) 由于这似乎是

我知道扫描DynamoDB是不可取的,是一种不好的做法

比如说,我有一个食品订购网站,我想每天扫描所有用户,找出谁在上周没有订购食品,这样我就可以给他们发送电子邮件(仅举一个例子)

这将对数据库提出一些非常高的要求,特别是在拥有大量用户的情况下


除了我错过的这些预定扫描,还有其他选择吗?或者在这种情况下,扫描是工作的最佳工具吗?

这个问题有很多不同的可能答案。通常情况下,所有这些都是从一个简单的事实开始的,即这样做的最佳方式取决于实际的细节和您试图优化的内容(成本、延迟、持续时间等)

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

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

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

  • 添加一个单独的索引,允许您轻松地“查询”上一个订单日期
  • 第一个应该是不言自明的。正如DynamoDB文章中经常描述的那样,您应该定义“访问模式”,并围绕它们构建索引。这里的优点是您仍然在DynamoDB中运行,缺点是增加的成本

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

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