我现在正在我的应用程序中使用dynamodb,但尚未投入生产。我有应用程序,在不同的视图中显示以下项目
1) show list of orders posted by other users from last 3 days to the user
2) show list of orders that user created
3) show list of orders that user have submitted bids
将其视为易趣,但任务和其他用户的用户发布订单除外。此外,我们没有在ebay中搜索功能,而是使用树状结构来显示和组织所有订单
level1 - list of states that have available orders from last 3 days,
level2- list of cities in state that have available orders from last 3 days,
level3- all orders from last 3 days in the city
现在我的架构正在进行大量的读写操作以执行上述操作,而且成本非常高。 Rightnow我们只是测试应用程序,只有3个用户和100个订单创建,每天花费我2美元。当我有数千名用户和数千份订单投入生产时,这笔费用将高得离谱。为了进行操作,我正在对完整订单集进行全面扫描。
由于这个dynamodb很贵,我正在考虑切换到mongodb。我只在本地运行mongodb,但从未在AWS上部署或拥有任何生产经验。但是,我愿意/学会降低成本。另外,我是AWS新手。我认为mongodb将是便宜的选项,因为它不是基于读写的收费。
另一种选择是使用RDS SQL DB,但为此我必须重新设计数据库并进行大量更改。
请给我一些关于在我的案例中最便宜和最好的选择的建议。谢谢。
答案 0 :(得分:2)
DynamoDB很便宜。你可以看一下使用MongoDB Atlas云产品,这种产品也很便宜,但价格可能不会便宜得多。你试图比较苹果和橘子。
然而,它看起来更像是一个设计问题。您似乎经常根据"过去3天"定期进行一些查询,您应该不经常查看这些查询并使用ElastiCache缓存这些结果。
更新: 如果您正在进行完整的收集扫描,那么也会出现其他错误。你需要避免这些。如果您还没有这样做,请使用全球二级索引。如果你已经用完了五个副词,你可以考虑只添加一些索引数据集。
关于MongoDB,它可以更灵活地创建索引,因为你可以创建覆盖两个以上字段的索引(例如城市,州和日期),你可以创建超过五个索引,这肯定会轻松您的完整扫描方案。此外,您还可以为某些查询使用强大的聚合框架。您仍应考虑使用ElastiCache(redis / memcached)缓存这些查询。