首页 > 解决方案 > 关系与非关系数据库 - 运动结果和模式

问题描述

我希望将一些历史运动结果整合到一个数据库中,这将允许我查询它们以用于构建应用程序和可视化的未来目的。

我对该领域的理解使我相信我可以采用非关系方法(例如 Amazon 的 DynamoDB),这样我就不必考虑数据库资源、大小等作为数据大小和查询其中,成长。

然后,我计划使用 Amazon Lambda 来处理数据的导入并处理对传入查询的响应。

我的两个问题是:

为了帮助理解第二个问题,如果这是一个关系数据库,则表看起来像这样。

标签: databasenosqlaws-lambdaamazon-dynamodb

解决方案


如果您的查询将大量加入这些表,则首选关系数据库。尽管可以使用 DynamoDB,但您将很难加入这些表。DynamoDB 的一个让开发人员难以理解的特性是索引。您必须使用哈希键进行搜索。所以你必须小心选择索引。

但是,如果数据就像查找一样,例如比赛 ID 123,获胜者是运动员 A。DynamoDB 会蓬勃发展,因为使用它有优势(可扩展性、最少的管理等)

就个人而言,我不喜欢 dynamoDB 在列出某些东西时(使用搜索、分页等)。当然,您可以建立一个搜索索引,但对于更简单的应用程序,这将是一种矫枉过正。

选择

如果您只对构建数据的可视化和聚合感兴趣,您可以使用 redshift 或 S3 来存储数据。稍后运行一些聚合函数。然后将聚合保存到 dynamodb 或 rds 中。

对于仅由最终用户查询和使用的数据,我考虑使用 dynamodb 和 RDS 数据库。


推荐阅读