多租户数据库设计方法:共享数据库表
共享数据库、独立 Schema
(1) 什么是Schema
oracle数据库:在oracle中一个数据库可以具有多个用户,那么一个用户一般对应一个Schema,表都是建立在Schema中的,(可以简单的理解:在oracle中一个用户一套数据库表)
mysql数据库:mysql数据中的schema比较特殊,并不是数据库的下一级,而是等同于数据库。比如执行create schema test 和执行create database test效果是一模一样的
共享数据库、独立 Schema:即多个或所有的租户使用同一个数据库服务(如常见的ORACLE或MYSQL数据库),但是每个租户一个Schema。
优点: 为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可支持更多的租户数量。
缺点: 如果出现故障,数据恢复比较困难,因为恢复数据库将牵涉到其他租户的数据; 如果需要跨租户统计数据,存在一定困难。
这种方案是方案一的变种。只需要安装一份数据库服务,通过不同的Schema对不同租户的数据进行隔离。由于数据库服务是共享的,所以成本相对低廉。
共享数据库、共享数据表
共享数据库、共享数据表:即租户共享同一个Database,同一套数据库表(所有租户的数据都存放在一个数据库的同一套表中)。在表中增加租户ID等租户标志字段,表明该记录是属于哪个租户的。
优点:所有租户使用同一套数据库,所以成本低廉。
缺点:隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量,数据备份和恢复最困难。
这种方案和基于传统应用的数据库设计并没有任何区别,但是由于所有租户使用相同的数据库表,所以需要做好对每个租户数据的隔离安全性处理,这就增加了系统设计和数据管理方面的复杂程度。
多租户数据库设计方法:共享数据库表相关推荐
- Oracle数据库设计方法
数据库设计师建立数据库及应用系统的技术,是信息系统开发和建设中的核心技术,具体来说,数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及应用系统,使之能够有效存储数据,满足各种用户 ...
- 数据库设计方法、规范与技巧(推荐)
数据库设计方法.规范与技巧(推荐) 一.数据库设计过程 数据库技术是信息资源管理最有效的手段.数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户 ...
- MySQL数据库设计概念(多表查询事务操作)
每天进步一点点 数据库设计概念 数据库设计简介 表关系(多对多) 表关系(一对多) 表关系之一对一 多表查询 笛卡尔积现象 内连接查询 外连接查询 嵌套查询(子查询) 事务操作 事务的概念 手动提交事 ...
- 多租户数据库设计方法:独立数据库
目前基于多租户的数据库设计方案通常有如下三种: 独立数据库 共享数据库.独立 Schema 共享数据库.共享数据表 独立数据库 独立数据库:每个租户一个数据库. 优点:为不同的租户提供独立的数据库,有 ...
- 数据库设计方法、规范与技巧
本文链接: http://www.openphp.cn/index.php/art.../100/index.html 一.数据库设计过程 数据库技术是信息资源管理最有效的手段.数据库设计是指对于一个 ...
- 数据库设计方法与规范 数据库设计过程
数据库技术是信息资源管理最有效的手段.数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求. 数据库设计中需求分析阶段综合各个用 ...
- 数据库设计层次3:构建表
源自:Stairway to Database Design Level 3: Building Tables 作者Joe Celko, 翻译:刘琼滨 谢雪妮 许雅莉 赖慧芳 译文: 对于设计和创建数 ...
- 大数据量下数据库设计及分库分表拆分原则
在设计数据库的建设前,首先准备工作是了解业务,然后根据业务数据进行数据库设计,设计的同时需要考虑业务数据量.可改造性.数据弱一致性.读写分离.复杂SQL多样化等: 首先,可数据根据读弱一致性可以考虑添 ...
- mysql数据库设计原则_mysql数据库设计总结
作者:腾讯云技术社区 链接:https://www.zhihu.com/question/19719997/answer/154809252 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权, ...
最新文章
- C面向对象之透明指针的运用
- 最快最简单的排序(之二)——桶排序(简化版)
- java it_Java中的Iterator的用法
- 内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc
- 机器学习(machine learning)之AdaBoost算法
- python asyncio future_Python asyncio.isfuture方法代码示例
- 二分法:两个有序数组长度为N,找到第N、N+1大的数
- 用自己的数据集训练Mask-RCNN实现过程中的坑
- 以太网安全技术ACL原理+配置
- Java生成随机数原理_JAVA随机数生成的机制
- 苹果电脑python编程里面怎么切到中文_苹果电脑输入法怎么切换到中文
- 构建Spring Cloud项目找不到Application类
- Windows10开启电脑卓越性能模式,运行速度提升10%,CUP利用率达到50%
- 计算机系统时间在哪改,win10系统日期时间在哪里修改?win10修改电脑时间的方法...
- 关于Word插入图片闪退
- 第14章 Python网络爬虫
- 为什么要学数学?因为它真的没用啊!
- Javascript setTimeout()
- java获取当前时间的小时
- JS小数运算的正确姿势:保留两位小数技巧全解析