每个客户端一个数据库或一个数据库中的所有客户 我应该将哪一个用于在线申请?

red*_*777 6 mysql database-design multi-tenant

所以我有这个应用程序,它有多个模块,从项目管理到会计模块.问题是我应该为每个客户(公司)建立一个数据库还是一个包含所有内容的数据库?

1)哪一个会更好的表现?
2)管理多个数据库要困难得多,或者这些数据库是否易于管理.
3)我们将为所有用户提供相同的应用程序,这意味着无论数据库的数量如何,都将使用相同的模式.
4)一些客户将会有很多(例如,会计师可能在一个表中每年增加200万行),而其他客户将使用更少的数据.

你觉得我应该怎么用?

Jon*_*aas 6

1)拥有单独的数据库可以更容易地在多个主机上分配负载,它以多种方式提升了屋顶; 磁盘,内存,锁定,cpu,备份时间等.如果你真的想在mysql中放入数百万行,那么使用单独的数据库(不仅是模式)甚至是单独的实例肯定是个好主意,这样资源消耗的客户就不会在资源消耗较少的情况下停止使用.

2)管理N的次数将是N次:N是数据库的数量:o)这个额外的成本必须与仅使用一个db/schema的成本进行比较,而是在代码中管理客户的分离.如果您必须在托管公司,甚至是本地脾气暴躁的dba上调用客户支持,而不是每次需要更新架构或创建新数据库时都从控制台运行一个简洁的脚本,那么管理本身就更加困难.

一些数据库和持久性框架支持多租户,Oracle已经开始在Hibernate 4中出现支持.

尽管许多参数在不同的数据库的方向来看,它通常可以只使用一个数据库为好.