我一直在阅读这些数据库上的一大堆但仍然不确定要使用什么。
我需要一个正在开发的游戏的后端。此后端需要存储用户帐户,用户拥有的项目和用户的分数。
在游戏开始时,用户将查询数据库中的项目。当他们获得一个新项目时,它会将其添加到他们在数据库上的帐户。项目将存储为大型JSON blob。
因此不会频繁访问此数据库。它不需要存储大量数据,因为它实际上每个用户只需要输入1个。但它应该能够扩展到数百万。
我需要查询数据库以确定哪些用户属于哪个特定类别或团队。
尽可能便宜,以可靠和足够快的方式存储这些数据是理想的。
最佳选择是什么?
答案 0 :(得分:4)
Redshift 是一个数据仓库,通常用于OLAP(分析)流程。分析DB对于事务处理来说太慢,并且通常不遵守主键外键约束。而 Aurora 和 DynamoDB 是OLTP(事务性)数据库。在您的情况下,如果您要将所有数据保存在单个JSON条目中,最好使用DynamoDB,但我建议使用Aurora,因为它是具有修复架构的RDBMS,但您必须为每个用户保留多个条目另一个表虽然检索它们只是一个连接查询。
答案 1 :(得分:2)
Redshift无法满足您的需求。它是一个OLAP数据库,旨在并行扫描大量数据。作为一个非常基本的示例,您可以将您的实时数据库导出到Redshift并查询它以查看是否有任何玩家有大量金钱或大量重复项目,并以这种方式寻找骗子。查询和更新单个记录非常糟糕。
Aurora和DynamoDB都是OLTP数据库,旨在像您想象的那样处理任务。根据个人经验,我可以说Aurora可以轻松扩展:我使用的是一个中档Aurora实例,它可以在数十亿个记录表中提供~2500 QPS。如果有的话,DynamoDB在类似的价位上比Aurora更具可扩展性,所以我不担心缩放。 :)
对于您描述的简单模式,选择Aurora或DynamoDB之一并不是一个非常令人信服的理由。 AWS在预览中有serverless Aurora,如果它现在可用,它将成为最低成本的灯光使用选择。也许现在使用带有Aurora的t2.small并在可以的时候迁移到无服务器?不过,DynamoDB在低端也相当便宜。