关系与非关系数据库 - 运动结果和模式

Posted

技术标签:

【中文标题】关系与非关系数据库 - 运动结果和模式【英文标题】:Relational vs Non-Relational Database - Sporting Results & Schema 【发布时间】:2018-07-18 03:06:07 【问题描述】:

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

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

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

我的两个问题是:

这是有效的方法吗? 非关系模式是什么样的?

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

活动 比赛(存储结果和相关字段的位置) 运动员 团队

【问题讨论】:

【参考方案1】:

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

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

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

替代

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

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

【讨论】:

谢谢肯德里克。这很有帮助。我将首先尝试走 DynamoDB 路径,看看在概念验证期间我是否发现自己受到限制。我可以看到 RDS 可能如何更好地工作,但我更喜欢您指出的最少的管理工作和可扩展性。

以上是关于关系与非关系数据库 - 运动结果和模式的主要内容,如果未能解决你的问题,请参考以下文章

关系型数据库与非关系型数据库的简介对比说明

NoSQL之redis配置

关系型数据库与非关系型数据库

关系型数据库与非关系型数据库区别

关系与非关系数据建模 - 有啥区别

关系型数据库与非关系型数据库概述,Redis简介常用命令及优化