考虑一个带有MySQL数据库的Web应用程序项目,它应该服务于多家公司。这些公司完全不相关,因此不应该访问彼此的数据。我可以想到有两种设计来实现这样的应用程序:
1。使用表company_id
表示每条记录的所有者。这样一个数据库将在多个公司之间共享。
2。将数据库专用于每个公司。这样,company_id
字段将被省略,数据隔离提供更好的安全保障。然而,多家公司将共享一个MySQL实例(由于项目的利润方面,不可能将MySQL实例专用于每个公司)。
如果我们假设这两种方法都是可行的(安全方面)哪一种更有效?
我认为这一切都归结为在MySQL中建立数据库的开销,但我不确定它有多少!
答案 0 :(得分:1)
从绩效角度来看,差异绝对可以忽略不计。
每个表中都有company_id
会给每个表单添加一些编程负载等,但这是标准的方法。这将被视为"最佳实践"。
为每个公司建立一个单独的数据库允许从公司指定管理员,例如,他们可以进行备份或截断,而不必担心看到或删除其他人的数据。这是IMO,是使用多个数据库的唯一原因。