大多数关于租户的问题都围绕着 Multi-Tenancy 数据库设计问题。我想了解单租户但多个应用程序。我正在开发的软件允许单个用户从单个代码库创建多个应用程序(我称它们为“部分”):
- 用户可以在 domain.com/application-blog1 中创建一个博客,在 domain.com/application-blog2 中创建另一个博客。
我已经决定为所有内容使用一个数据库,但我不确定是否应该为不同的应用程序实例或同一个表使用多个表,也许使用“sectionId”字段来区分它们。
我正在使用 mysql 和 myisam 表。在运行许多应用程序实例的情况下,将所有内容存储在同一个表中是否会导致锁定问题?
您对这个主题有何经验?
最佳答案
我认为人们通常不会在同一个数据库中使用多个表。如果您有同一应用程序的多个实例,您通常会有单独的数据库——通常只有当新实例是通过管理方式创建的,而不是通过最终用户操作创建的。在这种情况下,您会将数据库的名称放入配置文件中,并让软件连接到正确的数据库。
在您的情况下,我会选择使用 sectionIds 的单模式单数据库方法。这确实与 Multi-Tenancy 相同,也许不需要进行访问控制。
您当然会跨并发事务锁定。但是,这永远不会导致问题,因为不同部分的事务不会以冲突的方式对记录进行操作(除非创建新部分 - 您可能会有另一个表告诉您您有哪些部分)。
关于sql - 单租户、多应用数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1487416/