短版:
可以在同一个数据库中拥有一些共享表和其他每租户表吗?
更长的版本:
我们(我和一些非 stackoverflow-ers)正在设计一些多租户 SAAS。
我们目前使用的是共享数据库和共享模式架构,每个表都有一个tenant_id 列来区分租户的数据。对于小型数据集,例如我们的“用户”表(如果我们有 1000 个租户,每个租户有 10 个用户,= 10,000 行),这工作得很好。
但是,有些表会变得非常大。例如,“文件”表。每个租户可能有一百万个文件,其元数据需要存储在数据库中。每个拥有 1,000,000 个文件的租户创建一个 10 亿行表。我担心这操作起来会很慢,我想按租户切碎文件表。
问题:
有一些共享表和其他每租户表是否可以接受/可取,例如
files_<tenant_id>
?我想对可扩展性、备份、可维护性等问题进行批评。
- 处理如此大的数据还有哪些其他选择。
- 这仍然被认为是共享模式吗?