我正在设计一个系统,该系统具有一个功能,我必须允许用户创建帖子并回复帖子(帖子没有子级(。其中一个要求是显示自用户上次访问以来,每个论坛是否有新帖子。用户将被划分在不同的部门。可能有多个部门,但用户可以在各自的部门中看到。每个部门最多可拥有1000-1500名用户。
理想的用例是计算自上次访问以来的帖子数量,但即使我得到了自上次访问后新帖子的是/否答案,也没关系。
使用和RDS会很完美,因为每个帖子都可以很容易地建立父子关系。但RDS将花费我23美元/月,最低使用量。考虑到这只是一个想法的PoC,我不想每个月花那么多钱。所以我正在寻找替代方案。
另一种方法是DynamoDB。但是DynamoDB并没有提供任何开箱即用的东西(至少我不知道(来计算自给定日期时间以来的行数。我会在给定的时间内阅读所有帖子(假设我将datetime作为排序键,departmentid作为哈希键(,这会占用我的RCU(读取容量单位(。
实现这一要求的最佳优化(成本/运营(方式是什么。
此解决方案应该有效,但要正确实现可能会很复杂。为了简单起见,我建议先更改计数要求。您可以设置计数标签的阈值,例如100条未读邮件。在这种情况下,标签将显示100+ new messages
,而不是显示1521 new messages
。这种方法用于我遇到的大多数信使(例如Slack、Discord等(
这种方式允许您最多只读取100条下一条未读消息,并且不会消耗太多的RCU,尤其是如果您的实体很小(通常应该很小(。DDB对查询返回的所有项目的总大小收取费用。因此,您可以检索100行,如果它们的组合大小低于4096字节,则它们仍将花费0.5 RCU。