数据库设计的性能:n个客户的一个数据库与每个客户的数据库

时间:2015-03-08 08:38:41

标签: mysql performance database-design

考虑一个带有MySQL数据库的Web应用程序项目,它应该服务于多家公司。这些公司完全不相关,因此不应该访问彼此的数据。我可以想到有两种设计来实现这样的应用程序:

1。使用表company_id表示每条记录的所有者。这样一个数据库将在多个公司之间共享。

2。将数据库专用于每个公司。这样,company_id字段将被省略,数据隔离提供更好的安全保障。然而,多家公司将共享一个MySQL实例(由于项目的利润方面,不可能将MySQL实例专用于每个公司)。

如果我们假设这两种方法都是可行的(安全方面)哪一种更有效?

我认为这一切都归结为在MySQL中建立数据库的开销,但我不确定它有多少!

1 个答案:

答案 0 :(得分:1)

从绩效角度来看,差异绝对可以忽略不计。

每个表中都有company_id会给每个表单添加一些编程负载等,但这是标准的方法。这将被视为"最佳实践"。

为每个公司建立一个单独的数据库允许从公司指定管理员,例如,他们可以进行备份或截断,而不必担心看到或删除其他人的数据。这是IMO,是使用多个数据库的唯一原因。