【发布时间】:2012-09-21 01:51:48
【问题描述】:
短版:
可以在同一个数据库中拥有一些共享表和其他每租户表吗?
加长版:
我们(我和一些非 stackoverflow 人员)正在设计一些多租户 SAAS。
我们目前正在使用共享数据库和共享架构架构,每个表都有一个tenant_id 列来区分租户的数据。 对于小型数据集,例如我们的“用户”表(如果我们有 1000 个租户,每个租户有 10 个用户,= 10,000 行),这很好用。
但是,有些表会变得非常大。例如,“文件”表。每个租户可能有一百万个文件,其元数据需要存储在数据库中。每个拥有 1,000,000 个文件的租户创建一个 10 亿行表。 我担心这操作起来会很慢,我想按租户切碎文件表。
问题:
-
是否可以接受/建议有一些共享表和其他每个租户 表格,例如
files_<tenant_id>?我想就可扩展性、备份、可维护性等方面提出批评。
- 还有哪些其他选项可以处理如此大的数据。
- 这是否仍被视为共享架构?
【问题讨论】:
-
必须将文件保存在表格中吗?租户/用户有没有办法将它们放在本地文件夹中?这将是一个更容易的过程
-
@BhrugeshPatel 文件将存储在文件系统中。只有每个文件的元数据,例如 id、路径、权限等将存储在数据库中。
-
即使你说按租户打破它们,你也不能为每个租户创建新表。如果按文件类型拆分它们,搜索将很痛苦。尽管我非常怀疑您的表格中会有 10 亿行。但是,如果您必须打破它们,那么可能会按姓氏设置..即表 1 中的 A-H,表 2 中的 I-S 和表 3 中的休息或类似的东西。
标签: database-design multi-tenant