gpt4 book ai didi

postgresql - 使用多个模式或按 customerId 表列实现 Multi-Tenancy 数据结构

转载 作者:行者123 更新时间:2023-11-29 13:17:32 25 4
gpt4 key购买 nike

我正在开发将由许多客户使用的 Multi-Tenancy 商店 Web 应用程序(软件即服务)。我只想使用一个数据库。我将不胜感激有关如何在数据库中处理此问题的建议/反馈:

  1. 每个客户的单独架构。每当新客户注册时,我都会创建单独的架构。

  2. 所有客户的单一模式。并使用在所有其他表(例如订单、付款等)中引用的 customerId 创建一个 CUSTOMER 表。每当新客户注册时,我都会在 CUSTOMER 表中创建一个条目。

如果您想知道正在使用的技术:Postgres、Spring Boot MVC、REST、Maven、JPA。

谢谢。

最佳答案

这里有主要的权衡。使用客户 ID,您的外键变得更加复杂(客户 ID 可能应该是每个外键的一部分),这意味着额外的索引。这也意味着您必须有一些方法来执行此限制。最大的问题是您的应用程序中的错误很容易泄露其他客户的 Material 。

对于多个模式,您会遇到一个问题,即您有更多的表,这尤其会导致 pg_dump 出现性能问题。然而,通过适当的搜索路径,破坏其他客户的数据会更难一些。然而,这更难与连接池一起使用。

总的来说,我认为模式方法更好,因为您始终可以通过按客户集进行分区来横向扩展,并且更好的安全性很重要。然而,这意味着您必须对 search_path 有很好的理解,并在每个数据库事务中将其设置为一个合理的值。

关于postgresql - 使用多个模式或按 customerId 表列实现 Multi-Tenancy 数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46820611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com