用于独立游戏后端的 Aurora、Redshift 和 DynamoDB?

Posted

技术标签:

【中文标题】用于独立游戏后端的 Aurora、Redshift 和 DynamoDB?【英文标题】:Aurora vs Redshift vs DynamoDB for Indie Game Backend? 【发布时间】:2017-12-21 05:21:25 【问题描述】:

我已经阅读了大量关于这些数据库的内容,但仍然不确定该使用什么。

我需要一个我正在开发的游戏的后端。这个后端需要存储用户账号、用户拥有的物品以及用户的分数。

在游戏开始时,用户将在数据库中查询他们的物品。当他们得到一个新项目时,它将把它添加到他们在数据库中的帐户中。项目将存储为大型 JSON blob。

所以这个数据库不会被频繁访问。它不需要存储大量数据,因为每个用户实际上只需要 1 个条目。但它应该能够扩展到数百万。

我需要查询数据库以确定哪些用户属于哪些特定类别或团队。

尽可能便宜地以可靠且足够快速的方式存储这些数据是理想的。

什么是最好的选择?

【问题讨论】:

【参考方案1】:

Redshift 是一个数据仓库,通常用于 OLAP(分析)流程。分析型数据库对于事务处理来说太慢了,而且通常不遵守主键外键约束。而 AuroraDynamoDB 是 OLTP(transactional) 数据库。在您的情况下,如果您要将所有数据保存在单个 JSON 条目中,最好使用 DynamoDB,但我建议使用 Aurora,因为它是具有修复模式的 RDBMS,但您必须在每个用户中保留多个条目另一个表虽然检索它们将只是一个单一的连接查询。

【讨论】:

【参考方案2】:

Redshift 无法满足您的需求。它是一个 OLAP 数据库,旨在并行扫描大量数据。作为一个非常基本的示例,您可以将您的实时数据库导出到 Redshift 并查询它,以查看是否有任何玩家拥有大量金钱或大量重复物品,并以这种方式寻找作弊者。查询和更新单个记录很糟糕。

Aurora 和 DynamoDB 都是 OLTP 数据库,旨在按照您的想法处理任务。从个人经验来看,我可以说 Aurora 可以毫无问题地进行扩展:我使用一个中端 Aurora 实例,它在多个十亿记录表上始终提供约 2500 QPS。如果有的话,DynamoDB 在类似的价格点上比 Aurora 更具可扩展性,所以我不担心扩展。 :)

对于您描述的简单架构,选择 Aurora 或 DynamoDB 中的一个而不是另一个,并没有非常令人信服的理由。 AWS 有 serverless Aurora 预览版,如果现在可用,这将是轻型使用成本最低的选择。也许现在将 t2.small 与 Aurora 一起使用,并尽可能迁移到无服务器?不过,DynamoDB 在低端也很便宜。

【讨论】:

以上是关于用于独立游戏后端的 Aurora、Redshift 和 DynamoDB?的主要内容,如果未能解决你的问题,请参考以下文章

将 Aurora 数据迁移到 Redshift DWH 的好方法是啥?

如何将 Aurora Mysql ddl 翻译成 Redshift ddl

极光美人-Aurora STEAM官方中文步兵版

将 Postgres RDS 模式复制到 Redshift

斗地主游戏的案例开发

Spring OAuth:带有授权服务器后端的资源服务器