sql - 单租户、多应用数据库设计?

标签 sql mysql database-design data-modeling

大多数关于租户的问题都围绕着 Multi-Tenancy 数据库设计问题。我想了解单租户但多个应用程序。我正在开发的软件允许单个用户从单个代码库创建多个应用程序(我称它们为“部分”):

  • 用户可以在 domain.com/application-blog1 中创建一个博客,在 domain.com/application-blog2 中创建另一个博客。

我已经决定为所有内容使用一个数据库,但我不确定是否应该为不同的应用程序实例或同一个表使用多个表,也许使用“sectionId”字段来区分它们。

我正在使用 mysql 和 myisam 表。在运行许多应用程序实例的情况下,将所有内容存储在同一个表中是否会导致锁定问题?

您对这个主题有何经验?

最佳答案

我认为人们通常不会在同一个数据库中使用多个表。如果您有同一应用程序的多个实例,您通常会有单独的数据库——通常只有当新实例是通过管理方式创建的,而不是通过最终用户操作创建的。在这种情况下,您会将数据库的名称放入配置文件中,并让软件连接到正确的数据库。

在您的情况下,我会选择使用 sectionIds 的单模式单数据库方法。这确实与 Multi-Tenancy 相同,也许不需要进行访问控制。

您当然会跨并发事务锁定。但是,这永远不会导致问题,因为不同部分的事务不会以冲突的方式对记录进行操作(除非创建新部分 - 您可能会有另一个表告诉您您有哪些部分)。

关于sql - 单租户、多应用数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1487416/

相关文章:

java - 列数与第 1 行的值数不匹配

MySQL 交叉引用不同产品

sql - 数据库架构规范化违规

python - 我该如何解决这个问题 : ERROR: Command errored out with exit status 1 : when trying to "pip install psycopg2"

mysql - 创建一个表,表名中有空格

mysql - MariaDB 无法更改/禁用 sql 模式

php - 限制php中获取数据的列

sql - MySQL - 结合来自多个事务的问题和答案

sql - ERP 的最佳默认事务隔离级别是多少(如果有)?

sql 双向连接