SaaS应用:第二篇- SaaS应用的选型与构建

SaaS应用程序的设计方式并不唯一,针对不同的业务,需要应用不同的解决方案;

第一种、单一数据库,单一代码库

使用单个数据库,并将所有客户端数据存储在单个数据库中。您将必须在所有表中添加一个字段,例如“ tenant_id”,并修改所有SQL查询以选择正确的“ tenant_id”。如果您已经有一个租户应用程序,则需要对代码进行大量修改。
优点:易于管理数据库和更新;没有重复。
缺点:如果您错过了SQL查询中的“ tenant_id”,则可能导致另一个客户端出现问题。功能上,就比较标准化,就是定制化的版本,有什么功能就有什么功能;不能新增或者增减;
适用范围:功能稳定,架构清晰,面向客户的需求明确的系统;

第二种、多个数据库,单个代码库

为每个客户端创建一个单独的数据库。无需修改您现有的单租户代码库。您只需要修改配置文件即可根据客户端选择数据库。
优点:很少修改代码库,易于确保不会混淆客户端数据。
缺点:需要管理多个数据库,因此,在更新数据库架构时,您将必须更新每个数据库。
适用范围:功能稳定,架构清晰,面向客户的需求明确的系统,客户直接不需要连贯的系统;

第三种、多个数据库,多个代码库

创建一个单独的数据库,并为每个客户端复制完整的代码。完全不需要修改。
优点:无需修改代码库,易于确保客户端数据不会混合,易于执行客户端特定的修改。
缺点:要管理多个数据库/代码,因此,如果数据库模式/代码更新,则必须为每个客户端手动更新。造价成本特别高;
适用范围:功能不稳定,需要灵活配置的系统,业务不明确的,标准化不了的系统;造价成本得扛得住才行;

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

多个代码库(功能模块组合)+单个数据库(租户id作为表前缀or同一张表租户id)?

1年前 评论
Kayle_zhao (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!