Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 您建议使用哪种AWS服务来存储游戏数据?_Database_Rest_Amazon Web Services - Fatal编程技术网

Database 您建议使用哪种AWS服务来存储游戏数据?

Database 您建议使用哪种AWS服务来存储游戏数据?,database,rest,amazon-web-services,Database,Rest,Amazon Web Services,我正在制作一个需要有2个表的数据库的游戏。必须通过api端点访问数据库。表1是用户名和密码。表2是用户名和分数。我需要以下方法: 在表1中创建新用户和密码(必须是唯一的) 创建或更新表2中的分数(如果存在) 获取特定用户名、分数和排名 获得前10名分数和用户名 从传入的用户名列表中获取任意数量的用户名和分数 我曾尝试使用DynamoDB和Lambda函数来实现这一点,但它似乎没有足够的灵活性来获得我想要的东西。我必须扫描整个姓名表,然后找到前10名,这需要大量处理。还有其他建议吗 我不确定会有多

我正在制作一个需要有2个表的数据库的游戏。必须通过api端点访问数据库。表1是用户名和密码。表2是用户名和分数。我需要以下方法:

  • 在表1中创建新用户和密码(必须是唯一的)
  • 创建或更新表2中的分数(如果存在)
  • 获取特定用户名、分数和排名
  • 获得前10名分数和用户名
  • 从传入的用户名列表中获取任意数量的用户名和分数
  • 我曾尝试使用DynamoDB和Lambda函数来实现这一点,但它似乎没有足够的灵活性来获得我想要的东西。我必须扫描整个姓名表,然后找到前10名,这需要大量处理。还有其他建议吗

    我不确定会有多少用户,但假设会有很多。成本是一个因素,因此最便宜的解决方案是最好的。

    对于身份验证:

    用于存储:Amazon DynamoDB

    将分数填入两个表中

    表1:按用户和游戏划分

    • 分区键:用户ID+游戏ID
    • 排序键:游戏#(对所玩游戏实例的唯一引用)
    检索为特定用户玩的游戏时使用此表

    表2:按游戏和分数划分

    • 分区键:游戏ID
    • 排序键:Score

    在检索给定游戏的高分时使用此表(按分数降序排序)。

    我尝试使用DynamoDB。我发现的问题是,DynamoDB无法处理像“username”:[“usr1”、“user2”…“usrx”]这样的参数传递。它似乎也无法确定前10名的分数,除非我扫描整张表并自己找到,这是非常昂贵的。你可以使用带有排序键的GSI进行评分,这样你就可以按照评分查询用户,以找到得分最高的人。@Ashan我不确定GSI是什么,但我以前用dynamoDB尝试过的表被设置为带有排序键的评分。由于它被声明为排序键,因此它是一个必需的参数。这意味着,如果我想更新用户分数,我需要知道该用户的现有分数,并将其作为分数参数传入。这似乎是太多的工作,是一个额外的数据库调用。我相信排序也不起作用,因为我没有得分的值。我已经更新了我的答案,但其他人可能能够验证并提出改进建议。