的MySQL / PHP: 我有以下情况:我将在一台服务器上安装一个软件,大约70个表安装多次(很明显:它是一个MyBB论坛)。说,我将安装这500次(500个不同的论坛,让我们说,10个不同的主题和5种不同的语言,仅作为一个例子)。
我正在查看以下选项:
1& 2,我不必改变MyBB的大部分代码(易于维护),3& 4我必须编写某种搜索模式,用于每个查询以检测所有选定的表并附加WHERE子句(或者如果不存在则创建它)以考虑forumID(难以维护)。
如果我通过MyBB维护判断这一点,那么它就是前两个选项之一。但我还应该考虑一下:对于MySQL服务器来说,性能更高,速度更快?
谢谢, 克里斯
/ edit:所有论坛都将使用相同的代码。我不想要维护500件不同的装置......
答案 0 :(得分:1)
我只是复制架构pr。论坛。
参数:
答案 1 :(得分:1)
我认为你应该忘记选项3和4,因为:
你的表会变大,它们的索引也会变大。较大的索引意味着较慢的插入。选择可能不会受到太大影响。
据我所知,所有缓冲区和缓存都是实例范围的,因此在这方面,所有选项都是等效的。
重构代码的麻烦,以及每次升级后重做工作的需要对我来说都是足够的(对我来说)放弃这个想法。此外,即使是升级程序也可能需要调整以适应您的自定义布局。
您可能希望单独备份和恢复论坛。然后你需要自己编写备份脚本,mysqldump
在这种情况下无法帮助。每次添加新表时都会更新备份脚本(可能在升级期间发生)。
升级期间,数据库结构可能会发生变化。一次改变整个结构可能听起来骇人听闻。但是,您需要同时关闭所有500个论坛,并进行非常长的结构更改,而不是500个更小,更快的更改。
(主要适用于选项4)如果需要,将一个单独的论坛数据库移动到另一个服务器似乎更加困难。
如果入侵者破坏了您的应用程序,我相信她可以更容易地访问所有论坛,但这只是一个疯狂的猜测。
选项1和2的表现同样出色,表是否在同一个数据库上只是语法问题。
我偏好选项2,因为在每个数据库的基础上更容易授予访问权限。
答案 2 :(得分:0)
我会选择替代3(在其他表上创建论坛表和forumID列)。
这样您就可以从应用程序创建新论坛,而无需管理不同的模式或表格。
在我看来,进行架构更改比在论坛表中创建新行要差一些。