Amazon web services 必须统计记录,我应该使用哪个数据库

Amazon web services 必须统计记录,我应该使用哪个数据库,amazon-web-services,amazon-dynamodb,amazon-rds,Amazon Web Services,Amazon Dynamodb,Amazon Rds,我正在设计一个系统,它有一个功能,我必须允许用户创建帖子和回复帖子(没有子帖子)。其中一个要求是显示自用户上次访问后,每个论坛是否有新帖子。用户将分为不同的部门。可以有多个部门,但用户将在各自的部门内具有可见性。每个部门最多可拥有1000-1500名用户 理想的用例是统计自上次访问以来的帖子数量,但即使我得到关于自上次访问以来新帖子的是/否回答,也没关系 使用和RDS将是完美的,因为每个帖子都可以轻松地建立父子关系。但RDS的最低使用成本为每月23美元。考虑到这只是一个想法的PoC,我不想每个月

我正在设计一个系统,它有一个功能,我必须允许用户创建帖子和回复帖子(没有子帖子)。其中一个要求是显示自用户上次访问后,每个论坛是否有新帖子。用户将分为不同的部门。可以有多个部门,但用户将在各自的部门内具有可见性。每个部门最多可拥有1000-1500名用户

理想的用例是统计自上次访问以来的帖子数量,但即使我得到关于自上次访问以来新帖子的是/否回答,也没关系

使用和RDS将是完美的,因为每个帖子都可以轻松地建立父子关系。但RDS的最低使用成本为每月23美元。考虑到这只是一个想法的PoC,我不想每个月花那么多钱。所以我在寻找替代方案

另一种方法是DynamoDB。但是DynamoDB没有提供任何开箱即用的(至少我不知道)来计算给定日期时间后的行数。我会阅读给定时间内的所有帖子(假设我将datetime设为sortkey,并将departmentid设为哈希键),这会消耗我的RCU(读取容量单位)


实现这一要求的最佳优化(成本/运营)方式是什么。

DynamoDB确实不支持开箱即用。其中一个选项是预先计算行数,并将其存储在单独的实体中,以便快速访问。创建新帖子时,您还将增加帖子总数,当用户阅读帖子时,您将增加该用户已阅读的帖子数量。您可以使用或简化累积实体的更新

此解决方案应该可行,但正确实施可能会很复杂。为了简单起见,我建议首先更改计数要求。您可以为计数标签设置阈值,例如100封未读邮件。在这种情况下,标签将显示
100+条新消息,而不是显示
1521条新消息
。我遇到的大多数信使都使用这种方法(如松弛、不和谐等)


这种方式允许您最多只能读取100条未读消息,并且不会消耗太多的RCU,尤其是当您的实体很小时(一般来说,它们应该很小)。查询返回的所有项目的总大小的DDB费用。因此,您可以检索100行,但如果它们的总大小小于4096字节,它们仍将花费您0.5 RCU。

这就是我的想法,即改变方法,我甚至在我的问题中提出,如果计数困难,那么我可以计算自上次访问以来是否有任何“新”帖子。因此,即使有1个新职位,也应该有效。但是,我如何在不影响RCU的情况下限制dynamodb中返回的结果?在boto客户端中使用
limit
操作符是否正是我要寻找的?是的,
limit
将为您完成这项工作。它限制响应中返回项目的最大计数。请记住,如果除了
KeyExpression
之外还应用了
filtereexpression
,则在读取
限制
项数后,将应用过滤器。查看有关筛选器表达式的详细信息