Architecture 在多租户多数据库环境中,为多租户提供集中访问的最佳做法是什么?

Architecture 在多租户多数据库环境中,为多租户提供集中访问的最佳做法是什么?,architecture,migration,multi-tenant,Architecture,Migration,Multi Tenant,我最近在工作中遇到了以下架构问题,我不确定这里的最佳做法 我们为学校提供了一个多租户SAAS应用程序,其体系结构与中央主数据库(包含配置和共享数据)以及每个“学校组”的特定数据库一起工作。这些小组通常是地理性质的,学校合作并为他们的小组取得软件许可证 这在过去造成了一些问题,因为有时学校会改变群体。我们通过创建一个迁移工具来解决这个问题,该工具从一个数据库中提取学校数据,并将其合并到其他组数据库中 最近,我们遇到了以下请求:大多数学校由一个非营利组织运营(这与我们使用的分组不同),现在这些非营利

我最近在工作中遇到了以下架构问题,我不确定这里的最佳做法

我们为学校提供了一个多租户SAAS应用程序,其体系结构与中央主数据库(包含配置和共享数据)以及每个“学校组”的特定数据库一起工作。这些小组通常是地理性质的,学校合作并为他们的小组取得软件许可证

这在过去造成了一些问题,因为有时学校会改变群体。我们通过创建一个迁移工具来解决这个问题,该工具从一个数据库中提取学校数据,并将其合并到其他组数据库中

最近,我们遇到了以下请求:大多数学校由一个非营利组织运营(这与我们使用的分组不同),现在这些非营利组织要求向他们提供所有学校的申请权限。例如,一个组织有150多所学校,它们的数据存储在25多个不同的数据库中

平均数据库大小约为6-7GB,我们有大约350个数据库

我们最好的行动方案是什么,提供这种访问?将所有数据库合并到一个数据库并从一个数据库运行是可行的吗?我们是否应该创建某种类型的或同步算法到一个新的数据库,或者其他什么?我们的目标是根据需要改变我们的架构和基础设施,以提供这种新的方法角度

我忍不住觉得这个案例有一个标准的解决方案,有标准的体系结构,但我不知道它的名字。如果你把这个案例抽象化,应该有一个“好”的解决方案吗

摘要:

实体可以获取软件许可证,实体组可以获取软件许可证,实体可以更改组,管理组可以获取许可证(稍后),实体已被许可为单个或组许可证。数据应该在所有三个级别上都可以访问,每个用户的数据应该有正确的安全隔离


请提供我具体问题的答案,或抽象问题的解决方案。

可能的解决方案之一

抽象问题

更具体地说,是应用程序模型。我认为远程服务器的服务(由大型用户组使用)是联网的,以允许集中的数据存储。我认为SaaS多租户数据库体系结构正是您所需要的。这本书很有帮助


此外,对于您的情况,我认为一个好的选择是共享数据库,但要使用单独的模式。它允许在同一个DB中容纳多个租户。哪个租户有自己的模式。你可以找到这个和那个

在共享数据库中使用多个架构是否允许您跨架构查询数据(当管理组用户请求其所有实体的数据时会发生这种情况)?可以将所有内容配置为最适合。其中一个具体的解决方案是Oracle提供的解决方案。