Database 您建议使用哪种AWS服务来存储游戏数据?
我正在制作一个需要有2个表的数据库的游戏。必须通过api端点访问数据库。表1是用户名和密码。表2是用户名和分数。我需要以下方法:Database 您建议使用哪种AWS服务来存储游戏数据?,database,rest,amazon-web-services,Database,Rest,Amazon Web Services,我正在制作一个需要有2个表的数据库的游戏。必须通过api端点访问数据库。表1是用户名和密码。表2是用户名和分数。我需要以下方法: 在表1中创建新用户和密码(必须是唯一的) 创建或更新表2中的分数(如果存在) 获取特定用户名、分数和排名 获得前10名分数和用户名 从传入的用户名列表中获取任意数量的用户名和分数 我曾尝试使用DynamoDB和Lambda函数来实现这一点,但它似乎没有足够的灵活性来获得我想要的东西。我必须扫描整个姓名表,然后找到前10名,这需要大量处理。还有其他建议吗 我不确定会有多
- 分区键:用户ID+游戏ID
- 排序键:游戏#(对所玩游戏实例的唯一引用)
- 分区键:游戏ID
- 排序键:Score
在检索给定游戏的高分时使用此表(按分数降序排序)。我尝试使用DynamoDB。我发现的问题是,DynamoDB无法处理像“username”:[“usr1”、“user2”…“usrx”]这样的参数传递。它似乎也无法确定前10名的分数,除非我扫描整张表并自己找到,这是非常昂贵的。你可以使用带有排序键的GSI进行评分,这样你就可以按照评分查询用户,以找到得分最高的人。@Ashan我不确定GSI是什么,但我以前用dynamoDB尝试过的表被设置为带有排序键的评分。由于它被声明为排序键,因此它是一个必需的参数。这意味着,如果我想更新用户分数,我需要知道该用户的现有分数,并将其作为分数参数传入。这似乎是太多的工作,是一个额外的数据库调用。我相信排序也不起作用,因为我没有得分的值。我已经更新了我的答案,但其他人可能能够验证并提出改进建议。