【问题标题】:Shared and Per-Tenant Tables in Same Database [closed]同一数据库中的共享表和每租户表 [关闭]
【发布时间】:2012-09-21 01:51:48
【问题描述】:

短版

可以在同一个数据库中拥有一些共享表和其他每租户表吗?

加长版:

我们(我和一些非 stackoverflow 人员)正在设计一些多租户 SAAS。

我们目前正在使用共享数据库和共享架构架构,每个表都有一个tenant_id 列来区分租户的数据。 对于小型数据集,例如我们的“用户”表(如果我们有 1000 个租户,每个租户有 10 个用户,= 10,000 行),这很好用。

但是,有些表会变得非常大。例如,“文件”表。每个租户可能有一百万个文件,其元数据需要存储在数据库中。每个拥有 1,000,000 个文件的租户创建一个 10 亿行表。 我担心这操作起来会很慢,我想按租户切碎文件表。

问题:

  1. 是否可以接受/建议有一些共享表和其他每个租户 表格,例如files_<tenant_id>?

    我想就可扩展性、备份、可维护性等方面提出批评。

  2. 还有哪些其他选项可以处理如此大的数据。
  3. 这是否仍被视为共享架构?

【问题讨论】:

  • 必须将文件保存在表格中吗?租户/用户有没有办法将它们放在本地文件夹中?这将是一个更容易的过程
  • @BhrugeshPatel 文件将存储在文件系统中。只有每个文件的元数据,例如 id、路径、权限等将存储在数据库中。
  • 即使你说按租户打破它们,你也不能为每个租户创建新表。如果按文件类型拆分它们,搜索将很痛苦。尽管我非常怀疑您的表格中会有 10 亿行。但是,如果您必须打破它们,那么可能会按姓氏设置..即表 1 中的 A-H,表 2 中的 I-S 和表 3 中的休息或类似的东西。

标签: database-design multi-tenant


【解决方案1】:

哪个数据库?您是指数据库,就像 MySQL 表示数据库或架构一样?

真的,一个租户会有 100 万个文件吗?将它们拆分为租户每 db 会更容易

我们有tenant_id 风格的系统,如果我要再做一次,我会为每个架构选择一个租户。

【讨论】:

    猜你喜欢
    • 2023-02-13
    • 1970-01-01
    • 2014-03-21
    • 2011-10-06
    • 1970-01-01
    • 2012-06-15
    • 2022-09-27
    • 1970-01-01
    • 2012-10-06
    相关资源
    最近更新 更多