为多个用户共享部分数据的前缀表,单独的数据库或行分隔

时间:2014-02-28 22:37:09

标签: mysql database-design multi-tenant

我们正在开发saas模型中的应用程序 - 多个用户共享一小部分数据,而且大多数用户都是唯一的,只能按用户访问。 也可以在彼此之间共享一些信息。

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

全球/共享PRODUCTSPRODUCENTS表格 用户的表格,例如。 RMACLIENTS和其他许多具有独特数据的人 一些用户向其他用户提供服务外包

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

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

Schema的设计符合n3f,在某些方面具有非常复杂的关系。

提前感谢您提出任何建议。

----编辑:

多个TENANTS共享一些“全球”数据(例如,产品和产品)
每个租户有多个USERS

场景:作为服务提供商,其他TENANTS可以看到TENANT XYZ,因此其他人可以使用XYZ的服务

我主要关注的是,如何处理多租户架构。通过过滤器检查给定租户可访问哪些数据,从一个数据库提供数据会更有效率   OR
更好地为每个租户设置单个数据库?

1 个答案:

答案 0 :(得分:0)

有几种方法可以实现这一目标。让我记下我的观点。 基础 1.设计允许您标记哪些实体数据可供哪些租户的用户访问。

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

方案2:单租户视图 登录用户必须切换到租户的上下文才能查看该用户可以查看的数据。 在这种情况下,默认情况下用户可以查看自己的租户数据,根据要求查看服务管理员数据,他必须冒充自己作为服务管理员用户(模仿进入图片,因为他获得了对某些部分的视图访问权限)数据)。

在实现的角度来看,场景2有点简单和强大。

与我们分享您的理解。

相关问题