我正在构建一个具有以下结构的Web应用程序:我们有“客户”,每个客户都有自己的“用户”。 每个客户(包括他的用户和其他数据)与其他客户完全分开,并且他们之间没有共享数据。
而且每个“客户”有不同的子网站,并即将从那里(无论是他还是他的用户)将始终指单一customer.idMySQL体系结构优化 - MySQL集群
的数据库是建立在以下方式中的所有查询:
CREATE TABLE `customer` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT
) ENGINE=InnoDB;
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`customerID` int(11) unsigned
) ENGINE=InnoDB;
CREATE TABLE `blogPost` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`userID` int(11) unsigned
) ENGINE=InnoDB;
我有很多像'blogPost'这样的表通过用户连接到客户。
共同询问将是类似的东西:
SELECT *
FROM `blogPost` bp
INNER JOIN `user` u
ON bp.userID=u.id
WHERE u.customerID = 324
值得注意的是,这些连接是昂贵的,实际上是不必要的 - 因为我们进入一个子网站第二,我们只在数据感兴趣,定连接到特定的客户
所以问题是我该如何改进数据库?我对这个主题的了解越多,我就越困惑 -
是NDB(MySQL Cluster)存储引擎是否要走?
是否最好创建许多不同的数据库 - 每个客户一个? 也许增加一个冗余customerID
字段到blogPost
? 其他一些想法? MongoDB?!
MySQL集群不会解决这个问题,我想知道你是如何得出这个想法的?有一个“SELECT *”,表格看起来很基本,但是关于选择特定的列而不是所有的东西? – geertjanvdk 2013-03-21 07:35:50
表中有更多的字段 - 我只写了主键和外键......通常我只选择相关的列 - 这个查询只是一个例子来显示我试图摆脱的连接...我认为MySQL集群创建的行集群 - 以便每个客户和相关数据可以在他自己的集群中...也许这不是真的,虽然 - 我正在寻找任何解决方案,并不仅限于MySQL集群 – 2013-03-21 08:18:02