g我正在开发一个具有以下结构的 Web 应用程序:我们有“客户”,每个客户都有自己的“用户”。每个客户(以及他的用户和其他数据)都与其他客户完全分离,并且他们之间没有共享数据。
此外,每个“客户”都有不同的子网站,所有来自那里的查询(无论是他还是他的用户)都将始终引用一个 customer.id
数据库按以下方式构建:
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 集群)存储引擎是要走的路吗?
是否最好为每个客户创建许多不同的数据库?也许添加一个冗余customerID
字段blogPost
?还有什么想法?MongoDB?!