【发布时间】:2019-08-19 16:59:33
【问题描述】:
我完全理解使用共享模式和单独模式(或 mysql 中的数据库)的优缺点。查看我们选择使用共享架构的那些。
寻找有关如何更轻松地实现多租户的想法。我很高兴为每个表添加一个键,但这意味着我们需要为在每个查询中使用多租户的每个表添加“where tenant_id = X”。听起来很痛苦。
更好的方法是设置一些影响查询中的所有表或连接中的所有查询的参数。这将避免必须更新所有现有查询以及必须在以后的查询中包含对租户 ID 的检查。
我有一些初步的想法(如下),但它们似乎也很痛苦。
为每个按租户 ID 自动过滤的表创建临时视图(可能使用临时表?)
创建按租户 ID 过滤并在查询中动态设置表名的视图
按租户 ID 使用分区并查询各个分区。
谁有更好的想法?
【问题讨论】:
-
你考虑过表名前缀吗?
-
那么将每个表分成多个带有租户前缀的表?我认为为每个租户创建一组新表并不实际,因为这会使添加租户变得复杂,并且会使表更改变得困难,因为我们需要更新 X 个表而不是一个。
-
您没有指出每个租户都有相同的架构。反正我没看到问题。当然,在每个表中都有一个列,您可以利用表分区。而且您可能会在所有内容周围放置某种包装器,这样您就不必为每个查询添加 WHERE 子句。
-
当使用共享模式时,我认为这意味着所有租户都属于同一个模式。我很好奇您所说的包装器是什么意思,但是,您的意思是哪种包装器?谢谢!
标签: mysql mariadb amazon-aurora