Mysql实现多租户架构(mysql多租户)

MySQL在海量复杂用户业务数据库上的应用越来越广泛。多实例架构(也称为多租户架构)是在一个分厂出版的数据库中实现的一种可用的架构。一般来说,多租户架构中每个租户拥有自己的表,视图,存储过程,用户等,其中租户之间拥有完全隔离的拥有者权限。

MySQL实现多租户架构有多种选择,其中包括模式复制,Schema定制,数据存储分离,数据定制,视图隔离等。

模式复制也称为“模式+用户表”,是多租户架构中最流行的实现方法,其中用户以模式为单位进行隔离,每个模式中都包含有一张user表来记录数据的所有用户信息,在登录时从user表中检查角色和权限访问信息;如果有多个表,可以使用一个视图将它们聚集在一起,实现视图隔离,从而进行安全控制。

例如:

在创建模式时,重复使用下面的语句:

CREATE SCHEMA `schema_name1` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
CREATE SCHEMA `schema_name2` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ;

在Schema中创建user表:

CREATE TABLE schema_name1.user (
user_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (user_id )
)

在登录时检查角色和权限访问信息:

SELECT *
FROM schema_name1.user
WHERE user_id = ?

另外,MySQL中也可以使用Schema定制来实现多租户架构,只需为每个租户添加一个Schema,每个Schema中可以定义不同的表,视图,函数等,可以有效地保证数据库完整性;MySQL多租户架构还可以采用数据存储分离的方式,为不同租户配置不同的数据存储,分别使用不同的文件来存储数据或log文件,也可以实现完全的数据隔离性;或者根据数据定制的原则,将不同租户的数据存储在同一个文件中,使用唯一的标识字段来区分不同的租户的数据,以此来实现他们之间的数据隔离。

综上所述,MySQL可以有效地实现多租户架构的应用,可以通过Schema定制,数据存储分离,数据定制,视图隔离等来实现数据的安全和数据隔离。


数据运维技术 » Mysql实现多租户架构(mysql多租户)