mysql - 多个用户仅共享部分数据的前缀表、单独的数据库或行分隔

标签 mysql database-design multi-tenant

我们正在研究SaaS模型中的应用程序——多个用户共享一小部分数据,并且大部分数据是唯一的并且只能每个用户访问。 也可以在彼此之间共享一些信息。

系统的一部分处理 RMA 服务。我们假设:

全局/共享PRODUCTSPRODUCENTS
用户的表例如。 RMACLIENTS 以及许多其他拥有独特数据的
一些用户将其服务外包给其他用户

数据库是MySQL,问题是如何在可扩展性和可维护性的背景下处理用户之间的数据分离,为所有人提供公共(public)表?

1 为每个注册用户创建新数据库
2 为每个用户创建前缀表集
3 行级别的独立数据

Schema 的设计符合 n3f,在某些点上具有相当复杂的关系。

预先感谢您的任何建议。

----编辑:

多个租户共享一些“全局”数据(例如生产者和产品)
每个租户有多个用户

场景:租户 XYZ 作为服务提供商对其他租户可见,因此其他人可以使用 XYZ 的服务

我主要关心的是,如何处理 Multi-Tenancy 架构。通过过滤器检查给定租户可以访问哪些数据,从一个数据库提供数据是否会更有效

更好地为每个租户设置单个数据库?

最佳答案

有几种方法可以实现这一目标。我来写下我的看法吧。 根据 1. 进行设计,允许您标记哪个租户的用户可以访问哪些实体数据。

场景 1:统一 View 基于租户可访问性的数据列表。在这种情况下,最终用户将根据每个租户的权限查看整个数据集。

场景 2:单租户 View 登录的用户必须切换到租户的上下文才能查看该用户可以查看的数据。 在这种情况下,用户默认情况下可以查看自己的租户数据,根据要求查看服务管理数据,他必须冒充自己作为服务管理员用户(由于他被授予对服务的某些部分的查看权限,因此出现了冒充现象)数据。)。

从实现的角度来看,场景 2 有点简单且稳健。

与我们分享您的理解。

关于mysql - 多个用户仅共享部分数据的前缀表、单独的数据库或行分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22107177/

相关文章:

hibernate - 通过Hibernate 4用于 Multi-Tenancy 的Grails的版本

c# - Entity Framework Multi-Tenancy 共享数据架构 : single column, 多个外键

php - 如何防止 EntityManager (Doctrine Association) 删除

javascript - 从网络应用程序 DYMO labelwriter 进行打印

mysql - 照片关键字和数据库 - 哪种实现?

java - 根据用户所属组限制 hibernate 查询数据

MySQL从table2中选择数据,其中table1.field相等(并将其添加到结果中)

c# - C# 中指定的强制转换无效错误

database-design - 付费订阅网站的最佳表格设计是什么?

mysql - MySQL 5.5继承关系模型中的完整性约束问题