Mysql 5个单独的数据库还是1个数据库中的5个表?

Mysql 5个单独的数据库还是1个数据库中的5个表?,mysql,database-design,data-modeling,Mysql,Database Design,Data Modeling,比方说,我想建立一个游戏网站,我有很多游戏部分。它们都有大量需要存储的数据。让一个数据库中的一个表代表每个游戏,还是让一个数据库代表游戏的每个部分?我很期待一个“视情况而定”的答案。视情况而定 只是开玩笑。如果这是一个项目,并且数据以任何方式相互关联,我总是会选择一个数据库,但没有具体和令人信服的理由。为什么?因为我不记得曾经对自己说过“天哪,我真希望能更难看到这些信息。”管理5个不同的数据库会让人头疼。我建议使用一个数据库和5个不同的表。除此之外,我不会惊讶地发现你在5个用户之间有一些共同的信

比方说,我想建立一个游戏网站,我有很多游戏部分。它们都有大量需要存储的数据。让一个数据库中的一个表代表每个游戏,还是让一个数据库代表游戏的每个部分?我很期待一个“视情况而定”的答案。

视情况而定


只是开玩笑。如果这是一个项目,并且数据以任何方式相互关联,我总是会选择一个数据库,但没有具体和令人信服的理由。为什么?因为我不记得曾经对自己说过“天哪,我真希望能更难看到这些信息。”

管理5个不同的数据库会让人头疼。我建议使用一个数据库和5个不同的表。除此之外,我不会惊讶地发现你在5个用户之间有一些共同的信息,例如用户身份

请注意,“大量数据”的概念可能与数据库的不同。。。数据库通常是为了处理海量数据而编写的。

这取决于:

问自己以下问题:

是否有一个可恢复性(用户表)我可能想考虑一下? 是否值得将这些实体分开,或者它们几乎相同? 这些实体是否共享特定事件/需求? 是否值得我花时间和精力构建5个不同的数据库系统(请记住,如果你在编写游戏,这将意味着不同的连接字符串,并提供更多的安全性,等等)

或者,您可以创建一个数据库OnlineGames,并创建一个存储游戏名称和类别的表:

PacMan拱廊

塞尔达角色扮演

等等


这真的取决于你的意图……

虽然你的问题中没有足够的信息给出一个好的答案,但我要说的是,除非你预见到同一用户(或查询)同时需要来自两个游戏的数据,否则没有理由合并数据库

您可能应该为任何常见的对象创建一个数据库,然后为任何唯一的对象创建独立的数据库。数据库和代码一样,往往最终会针对不同的应用程序朝着不同的方向发展。把它们放在一起可能会导致你打破现状,或者在你的改变中变得更加保守

此外,有些数据库是在数据库级别而不是表级别进行优化、管理和备份的。由于它们可能具有不同的性能特征和使用模式,因此“一刀切”的解决方案可能无法扩展

如果使用ORM框架,您可以(几乎)免费访问多个数据库,同时仍然可以避免代码复制。因此,除非您有联合查询,否则我认为为共享数据库的风险买单是不值得的

当然,如果您付钱给某人来托管您的数据库,使用单个数据库可能会更便宜,但这确实是一个商业问题,而不是软件问题


如果您选择使用单一数据库,请帮自己一个忙,确保每个游戏的代码只知道特定的表。这将使您更容易在以后维护内容或将其分离到多个数据库中

如果要为每个游戏存储相同的数据,那么使用一个数据库来存储所有信息是有意义的。在不同的数据库中复制表结构是没有意义的,同样,如果5个游戏都存储相同的信息,那么为5个游戏创建5个表也是没有意义的。

如果不同的游戏不共享任何数据,那么使用单独的数据库是有意义的。另一方面,如果游戏数据的结构相同,则使用一个数据库是有意义的——否则,您必须分别对每个游戏数据库进行更改

更新:如果有疑问,您应该始终使用一个数据库,因为在大多数情况下,它更易于管理。如果您确定应用程序是完全独立的,并且具有完全不同的结构,那么您应该使用更多的数据库。唯一真正的优势是更清晰。

一个数据库

您合理地希望存储的大部分内容将是文本,或原始数据类型,如整数。你可能想把你的二进制内容放到blob中,但在一个媒体密集的网站上,当web服务器通过HTTP免费提供文件时,这是一个疯狂的计划

我在一家大型游戏发行商的网站上担任主要编程职责。我们设法用三种欧洲语言涵盖了他们当前和以前内容的大部分

我们从未考虑有多个数据库来存储所有这些,尽管每个标题都充满了视频和图像资源。

我无法想象为什么多数据库配置能够满足您的需求,无论是在开发中还是在it之外。你需要拉的同步量和出错的能力是巨大的。试图从他们所有人身上提取属于他们所有人的数据将是一场噩梦

您迁移的每个站点范围的更新都将是其难度和易出错性的n倍,其中n是您最终需要的数据库数量


说真的,一个数据库——这与您预期的答案相差甚远。

我不确定这是否正确,但我认为您希望一个数据库包含5个表,因为(以及其他原因)替代方案会对连接池产生影响(例如,如果您使用ADO.Net)。在ADO.Net连接池中,连接是由连接字符串设置的,因此对于五个不同的数据库,您可能最终会得到每个数据库的20个连接,而不是一个数据库的100个连接,这可能会影响连接分配的灵活性

如果有人知道更多或者有更多的信息,请添加到这里,因为我不确定我所说的是否准确。