【问题标题】:Issue with database schema for Django multi tenancy of a saas based invoicing app基于 saas 的发票应用程序的 Django 多租户的数据库架构问题
【发布时间】:2016-04-27 02:25:28
【问题描述】:

我对如何通过以下问题在 Django 中处理多租户存在疑问。我正在制作一个发票应用程序,每个用户独立地添加到产品/客户(等)模型中,然后使用它们来创建发票和库存。

现在,在这种情况下,请注意以下用例:

USER A
        Product (Unique on: Key)
         Key    Name        Price   Discount    Tax Total
         Pan    Panasonic   xxxxx   xxxxx   xxxxx   xxxxx
         Sam    Samsung     xxxxx   xxxxx   xxxxx   xxxxx
         Tes    Tesla       xxxxx   xxxxx   xxxxx   xxxxx
         App    Apple       xxxxx   xxxxx   xxxxx   xxxxx

        Cusomer (Unique on: Key)
         Key    Name    Address VAT No  Pending Amount
          c1    Cust1   abcd    1234    xxxxx
          c2    Cust2   xyz     0000    xxxxx
          c3    Cust3   pqr     1111    xxxxx

USER B 
        Product (Unique on: Key)
         Key    Name       Price    Discount    Tax Total
         Pan    Panteen    xxxxx    xxxxx   xxxxx   xxxxx
         Sam    Samsung     pppp    xxxxx   ccccc   dddd
         Tes    Tesla      xxxxx    xxxxx   xxxxx   xxxxx
         App    Apple      xxxxx    aaaa    xxxxx   bbbb

        Cusomer (Unique on: Key)
         Key    Name    Address VAT No  Pending Amount
          a1    Cust1   abcd    1234    xxxxx
          a2    Cust2   xyz     0000    xxxxx
          a3    Cust3   pqr     1111    xxxxx

每个用户独立创建这些表的行。例如,每个用户可以使用相同的产品密钥来命名不同的产品,他们也可以拥有具有不同价格/折扣的相同产品等。与客户相同。

并且用户不应该访问表的任何部分,除了他们创建的部分之外(这样用户 A 就不会误触用户 B 的数据)。

现在,我的数据库方案应该是什么?我应该如何进行?

此外,我有一个产品信息和一个客户信息字段,它们会处理唯一字段(即密钥),以让用户访问他们各自的产品/客户页面(他们可以在其中查看和编辑产品/客户数据)。

我打算在部署阶段使用 postgresql。

【问题讨论】:

    标签: django postgresql django-models multi-tenant saas


    【解决方案1】:

    在所有数据仅属于该用户的表上放置一个用户外键。然后只需在该表上按用户查询和过滤,有权查找用户外键,等等。

    【讨论】:

    • 嗯,我想过,但这不是反可扩展的(假设有 10k 用户,每个用户有 1k 产品,那么搜索将经过 10k*1k)?产品上的 slug 字段将如何工作?
    • 补充一下,我虽然使用了模式,但是,如果我没记错的话,Django 本身不支持模式,对吧?那样的话,我该如何合并它(我在Django中看到了ticket,但它不是一个非常动态的解决方案)
    猜你喜欢
    • 2014-01-26
    • 2020-08-01
    • 2023-01-28
    • 1970-01-01
    • 2012-05-28
    • 2014-07-27
    • 2012-07-24
    • 2011-11-03
    • 1970-01-01
    相关资源
    最近更新 更多