多租户模式下的数据库设计

4,846 阅读2分钟
  • 一、多租户技术

    • Multi-Tenancy Technology 又称为多重租赁技术,是一种软件架构技术,可以实现在多用户(这里的用户指的多是企业用户)环境下共用相同的系统或程序组件,并且可以确保各用户数据的隔离性。
    • 核心:同一套程序下实现用户数据的隔离。
    • 多租户技术通常应用Saas模式的软件系统中,Saas模式的软件应用统一部署到服务提供商的服务器上,客户可以根据自己的实际需求按需付费。在SaaS平台里需要使用共用的数据中心以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍可以保障各租户的数据正常使用。这样就大大增加了系统数据库的设计难度。
    • 传统软件模式与SaaS软件模式的对比
  • 二、多租户的数据库设计方案

      1. 独立数据库

      • 每个租户都有一个独立的数据库。
      • 优点:有助于简化数据模型和数据库的设计难度,数据隔离级别高,安全性好,出现故障数据恢复比较简单。
      • 缺点:增多了数据库的安装数量,导致购置成本和维护成本增加。
      1. 共享数据库,独立Schema

      • Schema

        • 在oracle中一个数据库可以具有多个用户,那么一个用户一般对应一个Schema,表都是建立在Schema中的。这里的Schema可以理解为Oracle中的用户,为每个租户创建一个用户。
        • 在MySQL中的Schema比较特殊,他对应的是MySQL实例下不同的数据库 database。
      • 多个或所有租户共用一个数据库服务,为每个租户创建一个database或schema。
      • 优点:安全性较高,提供了一定程度的逻辑数据隔离,但并不是完全隔离,每一个数据库可以支持更多的租户数量,节省了成本。
      • 缺点:因为涉及到其他租户的数据,发生故障时数据恢复比较困难;跨租户的数据统计比较困难。
      1. 共享数据库,共享数据表

      • 所有租户共用一个数据库、一套数据库表,在表中增加租户ID来标识该记录属于哪一个租户。
      • 优点:因为所有租户使用统一套数据库所以成本低廉。
      • 缺点:隔离级别最低,安全性最低,系统设计、数据库设计难度大,数据备份和恢复最困难。