一.SaaS和多租户
1.SaaS(Software as a Service):SaaS是一种软件交付模式,它通过互联网提供软件服务,用户无需购买、安装和维护软件本身。在SaaS中,服务提供商托管应用程序并提供给多个用户使用,每个用户可以访问其自己的数据和应用程序实例。SaaS的优势在于它提供了方便的托管和可扩展性,同时降低了用户的技术负担。
2.多租户(Multi-Tenancy):多租户是一种架构模式,它允许多个用户共享同一个应用程序实例,但每个用户都有自己的数据和配置。这种架构可以提高效率并降低成本,因为它可以减少服务器和存储的需求。在多租户架构中,不同的用户可能有不同的功能权限、视图和数据。这使得不同的用户可以以不同的方式使用同一套应用程序代码和数据库。
3.SaaS和多租户经常一起使用。在SaaS应用程序中,多租户架构可以使服务提供商更有效地为多个用户提供服务,因为多个用户可以共享相同的服务器和应用程序实例。多租户也可以简化用户的部署和管理任务,因为所有用户都可以使用相同的软件版本和补丁。
二.SaaS模式下多租户的数据库设计方案
1.业务字段隔离,共享数据库,共享数据表
所有租户共用同一个数据库,同一套数据表,在表中增加租户id为唯一标识用以针对不同租户进行数据隔离。
优点:数据库表结构只有一份,所有数据集中在一起,成本低廉,易于维护
缺点:租户过多数据库数据量过大时容易产生慢查询,不能满足大客户私有化部署,数据拆分和清理较耗时。
2.独立数据库,每个租户一个数据库,或者每个租户一个schema
每开通一个租户,就分配一个数据库或者schema
优点:实现简单,数据据库隔离性、安全性较好
缺点:如果部分租户数据量较少容易造成浪费,随着租户量增加,需要不断配置数据源,采购和维护成本增加。
3.混合模式
采用多个租户共享一个数据库的方式,如果该租户数据量较大,则单独为其分配一个数据库或者一个schema,如果该租户数据量较小,则采取多个租户共享一个数据库,共享数据表的方式。可通过在上下文中设置租户id进行路由分库获取不同租户的数据。