MySQL理论: Single DB for multiple companies

标签 mysql

我有 MySQL 的设计问题。作为一个业余项目,我正在尝试创建一个基于云的安全管理系统。用最基本的术语来说,公司将订阅该服务,该服务将管理公司文档记录(如 blob、纠正、员工信息、审计结果)。

我最初的设计理念是为每个公司拥有一个单独的数据库。

但是,我的问题是,如果用户访问控制是安全的,那么将所有公司都放在一个数据库下可以吗?这有什么陷阱呢?是否有任何性能问题需要考虑?为了识别记录,它是否是公司的复合键和每个公司唯一的引用ID号?如果是这样,当为公司的记录生成引用号时,它会随着记录集的增加而减慢吗?

就限制而言,我预计最多有 2000 家公司,最初每家公司最多 1000 条记录,每年增长 5%。我预计每个公司最多 2 GB 的 Blob 存储将以每年 10% 的速度增长。该系统是运行一台云服务器,无论是多个数据库还是一台大型数据库。

任何对此的想法将不胜感激。

最佳答案

如果没有太多公司间交互和总体频繁统计数据,并且您不打算每周左右进行应用程序更新,这会影响数据库结构,那么我会使用单独的数据库(和数据库用户)每个公司。它更具可扩展性,不易出现用户访问错误,并且更容易进行某些操作,例如删除公司。

另一方面,200 万个条目并不是什么大问题,如果您计划进一步开发应用程序,将其保留在一个数据库中可能是更好的方法。

关于MySQL理论: Single DB for multiple companies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28578087/

相关文章:

mysql Node : can't set headers after they are sent

mysql - 如何在sql中合并2列并排序

python - Ping MySQL 以在 Django 中保持连接

php - 使用子查询在 mysql 中构建嵌套对象

mysql - 使用 INNER JOIN 和 WHERE 更新 MySQL 中的两个表

PHP mysql_query Select 无法返回刚刚插入的行

php - 使用 PHP 从 TIMESTAMP 字段获取通过日期和时间

mysql - 如何在 Rust 中从 MySQL 获取二进制列?

不能为空的 MySQL 数据类型?

mysql - 通过 Doctrine 选择查询后,错误 : Invalid PathExpression. 必须是 StateFieldPathExpression