gpt4 book ai didi

mysql - 寻求有关特定用例的 MongoDB 性能的见解

转载 作者:行者123 更新时间:2023-11-29 10:05:47 26 4
gpt4 key购买 nike

我正处于对现有青年体育联盟网站 ( www.parochialathleticleague.org ) 进行彻底重新设计的开始阶段,使用 Vue.js 作为前端,并且需要对后端结构做出最终决定,这样我就可以继续推进该项目。在过去的 5 年里,我们使用带有自定义 PHP 脚本的 MySQL 数据库作为中介来发送、接收和编辑联赛赛程表和排名等数据。

我相信我可以再次有效地使用 MySQL,也许可以使用更智能的表结构,但我对在这个项目中使用 MongoDB 作为 NoSQL 实验的可能性非常感兴趣。我知道,我知道......人们对 Mongo 有很多讨厌,它最适合非常具体的用例,但我认为熟悉它以供将来引用将是一件有趣的事情。

也就是说,如果我决定使用 Mongo,我真的很感谢那些拥有更多经验的人提供的一些见解,了解在这个建议的用例中数据库性能的预期。具体来说,我会考虑三种可能的选项来组织时间表数据。请参阅下文(我为每个选项提供了一个游戏数据的示例):

选项 1 - 收藏:“2018 男子篮球 - 海岸 2A”

{
"date": "September 7",
"time": "3:30 PM"
"home": "Blessed Sacrament"
"h_score": 0,
"visitor": "St. Columban",
"v_score": 0,
"location": "Blessed Sacrament",
"game_id": 260
}

在上面提出的解决方案中,我将为每个部门创建一个单独的集合。上个赛季,篮球运动共有 34 个分区,因此在本例中相当于 34 个系列。这意味着更多的组织开销和更多的配置时间,但从逻辑上讲,这对于最终用户来说是最快的解决方案,因为任何一个部门拥有的游戏都不超过 50 款左右。这也是我在我们现有网站的 MySQL 解决方案中的设置方式:每个部门一个表。

选项 2 - 收藏:“2018 年男子篮球”

{
"date": "September 7",
"time": "3:30 PM"
"home": "Blessed Sacrament"
"h_score": 0,
"visitor": "St. Columban",
"v_score": 0,
"location": "Blessed Sacrament",
"game_id": 260,
"division": "Coastal 2A"
}

在上述提出的解决方案中,我将为每种性别创建一个单独的集合,从而仅产生两个集合 - 一个用于所有男孩的篮球比赛,一个用于女孩的篮球比赛。就组织和设置而言,这似乎比必须创建 34 个集合(如上例所示)要理想得多。但是,我不确定这对于最终用户来说会慢多少,因为现在该集合最多可以容纳 500 个游戏,而不是 50 个。因此,解析 500 个左右的游戏以在一个特定部门中找到 50 个左右的游戏在浏览器中呈现该部门的日程安排之前可能是一个问题 - 或者,希望根本不是问题!

选项 3 - 收藏:“2018 篮球”

{
"date": "September 7",
"time": "3:30 PM"
"home": "Blessed Sacrament"
"h_score": 0,
"visitor": "St. Columban",
"v_score": 0,
"location": "Blessed Sacrament",
"game_id": 260,
"division": "Coastal 2A",
"gender": "boys"
}

在上面提出的解决方案中,我将为特定赛季的所有比赛制作一个集合。这可能意味着总共有 1000 款游戏,我认为最终用户的速度可能会成为真正关心的问题。

<小时/>

非常感谢您的想法和建议。在做出最终决定之前,真的会重视一些现实世界的反馈。另外,如果你认为我是个十足的白痴(我不一定不同意!)并且绝对应该在这个项目中坚持使用 SQL,那么我会对上述三个选项提出同样的问题,只是在表/行结构中。非常感谢!

最佳答案

您需要牢记的一件重要事情是,MongoDB(以及大多数文档存储解决方案)中的架构设计通常围绕嵌入文档进行。因此,您最好将游戏本身放在部门文档中。然后游戏如果还包含球队、球员等的详细信息可能会更好。

当然,您可以标准化数据(就像在关系数据库中所做的那样),但您可能会依赖反模式并遇到烦人的性能问题。

MongoDB 每个文档的大小上限也为 16MB,因此在设计架构时需要考虑到这一点。

作为旁注,既然您提到您有 MySQL 背景。如今,MySQL也有document store产品,类似于 MongoDB(但有一些 differences )。对于您的情况,需要学习的内容可能会少很多,所以也许您应该看一下。

免责声明:我在 Oracle 的 MySQL 连接器团队工作。

关于mysql - 寻求有关特定用例的 MongoDB 性能的见解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51944631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com