视频学习地址:SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战
第二章day02:数据库设计与前端框架
1. 多租户Saas平台
1.1 多租户定义:
多租户技术(Multi-TenancyTechnology)
又称多重租赁技术:是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。简单讲:在一台服务器上运行单个应用实例,它为多个租户(客户)提供服务。
- 从定义中我们可以理解:多租户是一种架构,目的是为了让多用户环境下使用同一套程序,且保证用户间数据隔离。
- 那么重点就很浅显易懂了,多租户的重点就是同一套程序下实现多用户数据的隔离
1.2 需求分析:
传统软件模式:
指将软件产品进行买卖,是一种单纯的买卖关系,客户通过买断的方式获取软件的使用权,软件的源码属于客户所有,因此传统软件是部署到企业内部,不同的企业各自部署一套自己的软件系统。
Saas模式:
指服务提供商提供的一种软件服务,应用统一部署到服务提供商的服务器上,客户可以根据自己的实际需求按需付费。用户购买基于WEB的软件,而不是将软件安装在自己的电脑上,用户也无需对软件进行定期的维护与管理
2.共享数据库、独立 Schema
即多个或所有的租户使用同一个数据库服务(如常见的ORACLE或MYSQL数据库),
但是每个租户一个Schema。
- 优点: 为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可支持更多的租户数量。
- 缺点: 如果出现故障,数据恢复比较困难,因为恢复数据库将牵涉到其他租户的数据; 如果需要跨租户统计数据,存在一定困难。
三种方式对比:
此时的用户表是不满足第一范式的,因为对于address字段是可以继续拆分的:国家+城市
用户表就应该只存储用户表的信息,后续两种信息应该存在成绩表/图书表中。
第三范式:
对于学生表:
反三范式的出现
降低范式就是增加字段,允许冗余,。
【例】:如订单表,“金额”这个字段的存在,表明该表的设计不满足第三范式,因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。但是,增加“金额”这个冗余字段,可以提高查询统计的速度,这就是以空间换时间的作法。
在中,规定列有两种类型:数据列和计算列。
“金额”这样的列被称为“计算列”,而“单价”和“数量”这样的列被称为“数据列”。
2.2 三范式总结:
- 范式化
- 优点:
- 可以尽量的减少数据冗余,数据表更新快体积小
- 范式化的更新操作比反范式化更快
- 范式化的表通常比反范式化更小
- 缺点:
- 对于查询需要对多个表进行关联 导致性能降低
- 更难进行索引优化
- 优点:
- 反范式化
- 优点:
- 可以減少表的关联
- 可以更好的进行索引优化
- 缺点:
- 存在数据冗余及数据维护异常
- 对数据的修改需要更多的成本
- 优点:
3.前端框架:
了解前端技术栈(看得懂,会改就行):
- 技术栈
vue 2.5++,elementUI 2.2.2,vuex,axios,vue-router,vue-i18n, - 前端环境
node 8.++,npm 5.++
3.1安装与启动:
- 在vsCode中使用终端(命令安装文件):
通过淘宝镜像下载安装所有的依赖,几分钟后下载完成
如果没有安装淘宝镜像,请使用npm instal
3.2脚手架大纲:
- 这里的路由分为两种, constantRouterMap 和 asyncRouterMap 。
- constantRouterMap 代通用页面。
- asyncRouterMap 代表那些业务中通过 addRouters 动态添加的页面。
3.4 Mock.js
官方文档:http://mockjs.com/0.1/
Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:
- 根据数据模板生成模拟数据
- 模拟 Ajax 请求,生成并返回模拟数据
- 基于 HTML 模板生成模拟数据
实战例子:在vue中结合mock.js调试框架
-
mock.js的使用方法
Mock.Random 提供的完整方法(占位符)如下:
Type Method Basic boolean, natural, integer, float, character, string, range, date, time, datetime, now Image image, dataImage Color color Text paragraph, sentence, word, title, cparagraph, csentence, cword, ctitle Name first, last, name, cfirst, clast, cname Web url, domain, email, ip, tld Address area, region Helper capitalize, upper, lower, pick, shuffle Miscellaneous guid, id -
正确开启Mockjs的三种姿势:入门参考(一)
-
Mock.mock(url, type, data)
参数名 参数需求 参数描述 例子 url 可选: URL 字符串或 URL 正则 拦截请求的地址 /mock type 可选 拦截Ajax类型 GET、POST
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91271 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!