看到一篇比较多租户数据隔离方案的文章,总结挺不错。其实大部分内容在我前几年写的文章都有。

文章翻译自:

https://blog.arkency.com/comparison-of-approaches-to-multitenancy-in-rails-apps/

多租户意味着同一个应用上有不用的用户隔离。这是非常典型的saas模型。你可以用不同的隔离级别来实现多租户。

1. 行级别: 在每个数据库表里添加tenat_id字段,然后在每个查询语句也添加相应的tenant_id

2. schema 级别: 每个租户有在同一个数据库内自己独立命名空间。 可以容易使用 PostgreSQL schemas 来实现. 后续会介绍使用Mysql如何实现。

3. 数据库级别:每个租户创建独立的数据库。 非常少用到。

下面是比较这几种实现方式的优缺点:

  行级别 schema级别 db级别
租户创建时间 ️ 新增一条记录 慢 (需要创建schema和表 ) 非常慢 + 可能需要运维支持 

租户间泄漏数据风险

忘记添加 WHERE  比较安全 非常安全
侵入性 所有代码需要添加tenant_id    列条件 一般 非常少

Need shared tables or merging data across tenants

不同租户间共享和合并数据

没任何问题 sql可以跨数据查询 sql无法实现,只能应用代码实现

Running DB migrations

数据库迁移

️ O(1) O(n) O(n)
Conventionality Standard Rails

实现saas多租户方案比较的更多相关文章

  1. FreeSql 将 Saas 租户方案精简到极致[.NET ORM SAAS]

    什么是多租户 维基百科:"软件多租户是指一种软件架构,在这种软件架构中,软件的一个实例运行在服务器上并且为多个租户服务".一个租户是一组共享该软件实例特定权限的用户.有了多租户架构 ...

  2. SAAS云平台搭建札记: (一) 浅论SAAS多租户自助云服务平台的产品、服务和订单

    最近在做一个多租户的云SAAS软件自助服务平台,途中遇到很多问题,我会将一些心得.体会逐渐分享出来,和大家一起探讨.这是本系列的第一篇文章. 大家知道,要做一个全自助服务的SAAS云平台是比较复杂的, ...

  3. 微软SaaS多租户解决方案

    微软SaaS多租户解决方案 docs.microsoft.com/en-us/azure/sql-database/saas-tenancy-app-design-patterns https://d ...

  4. SaaS多租户模式数据存储方案

    云计算多租户几乎用于所有软件即服务 (Software as a Service, SaaS) 应用程序,因为计算资源是可伸缩的,而且这些资源的分配由实际使用决定.话虽如此,用户可以通过 Intern ...

  5. SaaS多租户模式数据存储方案比较

    云计算多租户几乎用于所有软件即服务 (Software as a Service, SaaS) 应用程序,因为计算资源是可伸缩的,而且这些资源的分配由实际使用决定.话虽如此,用户可以通过 Intern ...

  6. 数据层的多租户浅谈(SAAS多租户数据库设计)

    在上一篇“浅析多租户在 Java 平台和某些 PaaS 上的实现”中我们谈到了应用层面的多租户架构,涉及到 PaaS.JVM.OS 等,与之相应的是数据层也有多租户的支持. 数据层的多租户综述 多租户 ...

  7. JeeSite 4.x SAAS 多租户技术设计方案

    SaaS 是 Software-as-a-Service(软件即服务)的简称,从技术角度上可称之为 “多租户技术或称多重租赁技术”.它与 “按需软件.应用服务提供商.托管软件” 所具有相似的含义.它是 ...

  8. [转载]数据层的多租户浅谈(SAAS多租户数据库设计)

    原文:http://www.ibm.com/developerworks/cn/java/j-lo-dataMultitenant/index.html 在上一篇“浅析多租户在 Java 平台和某些 ...

  9. saas 系统租户个性化域名&&租户绑定自己域名的解决方案

       实际的需求就类似github 的自定义page 1. 个性化域名    github 实现原理就是用户个性化域名使用泛域名解析,这个比较简单,大部分域名提供商都可以解决    具体操作不用赘述 ...

随机推荐

  1. MySQL常见面试题索引、表设计

    正确使用索引的条件 1.建立索引的列的重复度不能太高 2.条件列不能参与计算 3.不能使用函数 4.条件中不能使用范围 5.不要使用like '%c' 6.条件中用or a=0 or b=1 or c ...

  2. vue修改对象的属性值后页面不重新渲染

    原文地址:vue修改对象的属性值后页面不重新渲染 最近项目在使用vue,遇到几次修改了对象的属性后,页面并不重新渲染,场景如下: HTML页面如下: [html] view plain copy &l ...

  3. IntelliJ IDEA 2020.1 取消了auto-import自动导入

    Maven 和 Gradle 导入功能更新 v2020.1使得Maven和Gradle更改的导入不再繁琐.首先,我们删除了总是触发的自动导入,以及在更新完脚本之前不断显示并建议导入更新的提示框.取而代 ...

  4. jdk编译java文件时出现:编码GBK的不可映射字符

    出现此问题的几种解决办法: 1.cmd下使用javac编译java文件 如: javac test.java 解决办法:编译时加上encoding选项 javac -encoding UTF-8 te ...

  5. 28-2 类型转换函数Cast-Convet

    ------------------------类型转换函数------------------------ --cast(表达式 as 数据类型) --convert(数据类型,表达式) ' as ...

  6. WordPress获取某个分类关联的标签

    我在WordPress后台某篇文章的编辑页面,给这篇文章选择了分类:WordPress,接着同时选择了标签:php.主题制作,这时分类(WordPress)就与标签(php.主题制作)建立了关联,利用 ...

  7. 微信小程序开发 -- 通过云函数下载任意文件

    微信小程序开发 -- 通过云函数下载任意文件 1.云开发介绍 ​ 微信小程序开发者众所周知,小程序开发拥有许多限制,当我还是一个菜鸟入门的时候,第一关就卡在了没有备案域名的HTTP请求上面,那时候云开 ...

  8. 接单,开发,学习神器--基于SpringSecurity的后台权限管理系统

    基于SpringSecurity--码仔后台管理系统 1.技术选项 >- 核心框架 SpringBoot >- 权限框架 SpringSecurity >- 模板引擎 Thymele ...

  9. ngnix随笔四

    1.alias path 例1. =>http://www.a.com/bbs/ root /data/vhosts/; location /bbs/{ alias /data/a.com/; ...

  10. python3.7 64bit安装pygame1.9.3

    https://blog.csdn.net/xiaolixi199311/article/details/79209506/