单数据库多租户数据隔离学习总结

编程入门 行业动态 更新时间:2024-10-07 18:25:27

单数据库多<a href=https://www.elefans.com/category/jswz/34/1770709.html style=租户数据隔离学习总结"/>

单数据库多租户数据隔离学习总结

1 为什么要隔离

对不同租户间数据隔离,从而保证数据安全

2 三种管理多租户数据的方法

多租户数据管理会涉及到数据共享和隔离程度。采用不同的技术业务手段隔离和共享程度也会发生变化。但每种方法也有其相似性。

以微软SQL Server为例(包含模式的定义),如果采用了 隔离数据库的方法,隔离程度最高。而采用共享模式的方法,数据共享程度最高。而共享模式的方法,正好是隔离程度与共享度的一种折中。

2.1 隔离数据库

每个租户一个数据库。租户共享上层应用,但每个租户在底层有自己的库存储数据,同时这些数据与其他所有组合相隔离。通过库的隔离,保证数据安全性,防止数据被意外或恶意的被其他租户访问或破坏。

每租户一个数据库,租户可以方便地更改自己的数据模型、数据备份与恢复。

但这种模式下由于每个库一个租户,开销会较大。但如果有很强的隔离要求,可以考虑使用这种模式。

2.2 共享一个数据库,对模式隔离

在Sql Server中有schema这个概念,因此整个结构分为 数据库->模式->表,这种隔离方式就在Schema上进行。一个库下,每个租户对应一个schema。Schema在mysql下就等同于数据库的概念。隔离方式也很好理解。


在sql server下,每个租户对应一个schema,然后在这个schema下为租户建表。

创建schema

CREATE SCHEMA ContosoSchema AUTHORIZATION Contoso

建表

CREATE TABLE ContosoSchema.Resumes (EmployeeID int identity primary key, Resume nvarchar(MAX))

将schema设置为租户的默认账户

ALTER USER Contoso WITH DEFAULT_SCHEMA = ContosoSchema

租户可以访问默认schema下的表,或者访问租户对应的schema下的表。

这种方式的优缺点就依赖于schema上提供的能力。

2.3 共享一个数据库,一个模式,在表上隔离

在2.3中提到的,sql server中schema等同于mysql中的数据库。因此这种模式下在mysql下中相当于在一个数据库下,不同的租户共享数据库中的表。即不同的租户使用不同的行。为了区分不同租户需要增加租户ID(tenantId)来区分租户。


这种模式下直接共享了表,因此很多通过db提供的不同租户间安全保护、隔离能力均需要再应用层来完成。开发工作量会较多。

2.4 小结

2.1 - 2.3 的多租户实现,基于分层的思想。依赖不同的数据库产品,在不同的层次上实现对租户的划分。因此其优缺点也就与所在层的组件所具有的能力相关。如果能力不足,则需要额外的开发工作。

3 隔离方式的选择

上述介绍了三种方式,可以从以下几点考虑如何选择。

  • 经济角度:共享表的形式需要较高的开发量,处理成本较高,需要考虑安全,隔离,容量,访问量等问题。但后期接入成本会逐渐降低。
  • 安全角度:直接基于数据库隔离会减轻工作量。但通过共享表的方式处理也能提供相应的安全能力,只是需要良好的设计与开发。
  • 租户角度:服务的租户数量、每个租户占用的存储空间、租户的并发数量等

下图就就对租户相关的因素的一种图形化描述。

4 做什么

数据隔离,从分层的角度考虑,并基于不同的数据库产品进行数据划分。最终就是要做到如何把租户的数据路由到正确的位置,让用户无感知。

参考[2]中介绍了一些方式,例如在数据库组件中拦截sql语句,增加一些参数,最终在用户无感知的情况下事情请求路由。

同理其它方面安全检查、鉴权等也可以参考进行相应处理。

5 总结

还是基于分层思想,结合不同产品,针对实际情况进行开发。当然实际开发中涉及的细节还是很多。

参考

[1]://msdn.microsoft/en-us/library/aa479086.aspx
[2]java多租户/

更多推荐

单数据库多租户数据隔离学习总结

本文发布于:2024-03-09 03:11:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1723566.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:租户   数据库   数据

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!