第2章 数据库设计与前端框架

1 多租户SaaS平台的数据库方案

1.1 多租户是什么

多租户技术(Multi-TenancyTechnology) 又称多重租赁技术:是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。简单讲:在一台服务器上运行单个应用实例,它为多个租户(客户)提供服务。从定义中我们可以理解:多租户是一种架构,目的是为了让多用户环境下使用同一套程序,且保证用户间数据隔离。那么重点就很浅显易懂了,多租户的重点就是同一套程序下实现多用户数据的隔离

1.2 需求分析

传统软件模式,指将软件产品进行买卖,是一种单纯的买卖关系,客户通过买断的方式获取软件的使用权,软件的源码属于客户所有,因此传统软件是部署到企业内部,不同的企业各自部署一套自己的软件系统

Saas模式,指服务提供商提供的一种软件服务,应用统一部署到服务提供商的服务器上,客户可以根据自己的实际需求按需付费。用户购买基于WEB的软件,而不是将软件安装在自己的电脑上,用户也无需对软件进行定期的维护与管理


在SaaS平台里需要使用共用的数据中心以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍可以保障客户的数据正常使用。由此带来了新的挑战,就是如何对应用数据进行设计,以支持多租户,而这种设计的思路,是要在数据的共享、安全隔离和性能间取得平衡。

1.3 多租户的数据库方案分析

目前基于多租户的数据库设计方案通常有如下三种:

  1. 独立数据库
  2. 共享数据库、独立 Schema
  3. 共享数据库、共享数据表

1.3.1 独立数据库

独立数据库:每个租户一个数据库。

  • 优点:为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复数据比较简单。
  • 缺点: 增多了数据库的安装数量,随之带来维护成本和购置成本的增加

这种方案与传统的一个客户、一套数据、一套部署类似,差别只在于软件统一部署在运营商那里。由此可见此方案用户数据隔离级别最高,安全性最好,但是成本较高

1.3.2 共享数据库、独立 Schema

(1) 什么是Schema
oracle数据库:在oracle中一个数据库可以具有多个用户,那么一个用户一般对应一个Schema,表都是建立在Schema中的,(可以简单的理解:在oracle中一个用户一套数据库表)


mysql数据库:mysql数据中的schema比较特殊,并不是数据库的下一级,而是等同于数据库。比如执行create schema test 和执行create database test效果是一模一样的


共享数据库、独立 Schema:即多个或所有的租户使用同一个数据库服务(如常见的ORACLE或MYSQL数据库),但是每个租户一个Schema。

  • 优点: 为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可支持更多的租户数量。
  • 缺点: 如果出现故障,数据恢复比较困难,因为恢复数据库将牵涉到其他租户的数据; 如果需要跨租户统计数据,存在一定困难。

这种方案是方案一的变种。只需要安装一份数据库服务,通过不同的Schema对不同租户的数据进行隔离。由于数据库服务是共享的,所以成本相对低廉。

1.3.3 共享数据库、共享数据表

共享数据库、共享数据表:即租户共享同一个Database,同一套数据库表(所有租户的数据都存放在一个数据库的同一套表中)。在表中增加租户ID等租户标志字段,表明该记录是属于哪个租户的。

  • 优点:所有租户使用同一套数据库,所以成本低廉。
  • 缺点:隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量,数据备份和恢复最困难。

这种方案和基于传统应用的数据库设计并没有任何区别,但是由于所有租户使用相同的数据库表,所以需要做好对每个租户数据的隔离安全性处理,这就增加了系统设计和数据管理方面的复杂程度。

1.4 SAAS-HRM数据库设计

在SAAS-HRM平台中,分为了试用版和正式版。处于教学的目的,试用版采用共享数据库、共享数据表的方式设计。正式版采用基于mysql的共享数据库、独立 Schema设计(后续课程)。

SaaS-多租户SaaS平台的数据库方案相关推荐

  1. 多租户SaaS平台的数据库方案

    多租户SaaS平台的数据库方案 1.1 多租户是什么 多租户技术(Multi-TenancyTechnology)又称多重租赁技术:是一种软件架构技术,是实现如何在多用户环境下 (此处的多用户一般是面 ...

  2. SaaS-多租户SaaS平台的数据库方案(数据库设计与建模)

    2 数据库设计与建模 2.1 数据库设计的三范式 三范式: 第一范式(1NF):确保每一列的原子性(做到每列不可拆分) 第二范式(2NF):在第一范式的基础上,非主字段必须依赖于主字段(一个表只做一件 ...

  3. springcloud多租户实现原理-Saas多租户实现-以及几种方案_设计思路---springcloud工作笔记108

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 公司有把现有项目改成多租户系统的需求,就研究总结了一下. 下面这个图是个多租户的: 另外我整理一下 ...

  4. 建筑建材行业SaaS多租户用户管理系统:高度整合企业资源,探索数字化转型新路径

    近年来,我国建筑建材行业销售额整体呈现波动下滑的趋势.2020年受疫情影响,行业销售额下滑严重.2020年我国规模以上建材家居卖场累计销售额为7624亿元,较2019年同比下降24.19%.随着房产消 ...

  5. 快消品行业定制化多租户SaaS系统:提供个性化配置,加速快消品企业运转效率

    快消品作为批发行业里竞争较大的品类,其发展情况一直以来都备受瞩目.2021年前三季度,中国快消品的销量和销售额分别增长3.3%和3.6%,实现温和复苏,同时,平均售价小幅上升0.3%,快消B2B行业由 ...

  6. 快消品多租户SaaS加速企业运转

    快消品作为批发行业里竞争较大的品类,其发展情况一直以来都备受瞩目.2021年前三季度,中国快消品的销量和销售额分别增长3.3%和3.6%,实现温和复苏,同时,平均售价小幅上升0.3%,快消B2B行业由 ...

  7. 多租户SaaS平台数据库方案

    目录 什么是多租户 需求分析 多租户数据库方案分析 独立数据库 共享数据库,独立 Schema Schema 介绍 共享数据库.数据表 三种方案的对比 什么是多租户 多租户技术(Multi-Tenan ...

  8. SaaS云平台多租户数据库方案,完美兼顾共享、独占模式

    构建SaaS云平台多租户架构,首要的问题要解决数据如何存储的问题,业界基本上已经形成共识,无非是以下三种方案: 1.共享数据库,共享表 在表中增加TenantId多租户的数据字段,以区分不同租户的数据 ...

  9. 多租户SaaS平台的数据库设计方案

    1. 多租户是什么 多租户技术(Multi-TenancyTechnology)又称多重租赁技术:是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件 ...

最新文章

  1. hive in 写法/linux OR CDH如果查看hive的版本
  2. GetCallbackEventReference实用讲解
  3. IIS身份验证的配置
  4. java drawimage 参数_小程序中canvas的drawImage方法参数使用详解
  5. Android使用token维持登陆状态的方法
  6. 运行mapreduce程序yarn的web端显示进度
  7. Diango博客--24.单元测试:测试评论应用
  8. oracle查询cpu占用率高,解决oracle进程CPU占用过高问题
  9. Media Queries语法总结
  10. 论学好数学对机器学习的重要性
  11. 移远4G模组EC600N进行TCP/IP连接和服务器测试
  12. 毕业季怎么做答辩PPT?
  13. ShenYu 网关部署趟的坑
  14. 小白开始学RTOS 1
  15. 直流屏控母和合母有什么区别
  16. 【数据结构】线性表之单向链表的八大基操
  17. MybatisPlus代码生成器报错AutoGenerator()‘ has private access in ‘com.baomidou.
  18. 四、子弹类的创建,飞机子弹发射与无用子弹的销毁(雷霆战机)
  19. appfuse 1.9.2 的AOB (面向方面的bug)
  20. 命令行下将Debian10升级为Debian11

热门文章

  1. 库卡机器人会卡顿吗_KUKA机器人使用经验总结
  2. 使用Pyecharts进行全国水质TDS地图可视化全过程4:使用Python将Excel表拆分至多个Excel文件
  3. Mybatis标签之association关联查询对象属性
  4. 区块链技术引领新一轮技术变革浪潮
  5. 书生电子合同_阿里、腾讯入局!电子签名行业即将进入爆发期,这些股票将受益...
  6. COM线程模型-套间
  7. windows下配置Android环境
  8. teablue数据分析_盘点数据差异分析
  9. 通过 Kubernetes 和容器实现 DevOps
  10. [Java] Java踩地雷产生程式