Mojolicious数据库操作(七)

一、属性

有些属性不做一一介绍了。直接看例子即可:

#dsn前面我们已经介绍过了,是DBI连接数据库的要素,下面是读取和设置方法:
my $dsn = $mysql->dsn;
$mysql = $mysql->dsn('dbi:mysql:dbname=foo');

#数据库最大连接数:
my $max = $mysql->max_connections;
$mysql = $mysql->max_connections(3);

#密码:
my $password = $mysql->password;
$mysql = $mysql->password('s3cret');

#用户名
my $username = $mysql->username;
$mysql = $mysql->username('batman');

二、属性之选型——options

这里的options选项代指mysql的一些选项参数,可以直接在此方法中开启,而无需在数据库中设置:

#这是读取、设置的方法
my $options = $mysql->options;
$mysql = $mysql->options({mysql_use_result => 1});

有一些比较常用的选项,如mysql_enable_utf8开启utf8格式,AutoCommit事务自动提交,RaiseError报错等等。

AutoCommit默认开启的,如果在代码中使用了$db->begin,那么此选项不能关闭。

RaiseError选型在堵塞式查询中是开启的,而非堵塞式查询里是关闭的。

mysql_enable_utf8代指在连接mysql数据库时,开启数据库的utf8mb4编码格式(此功能尽在mysql5.5版本以上支持。现在要么是5.7,要是8,可以忽略此要求了)。

三、属性之订阅——pubsub

关于订阅这个功能,我没有用过的。根据MetaCPAN上官方文档说明,意思是像PostgreSQL数据库中有订阅和发布功能的,而mysql数据库中没有此功能。为了弥补缺失,Mojo::mysql模块开发了一个Mojo::mysql::PubSub模块来模仿订阅和发布功能。

而该属性便是设置该模块而存在的。

my $pubsub = $mysql->pubsub;
$mysql = $mysql->pubsub(Mojo::mysql::PubSub->new);

刚才查阅了一下关于PostgreSQL中订阅、发布功能的意义——在大型网站中,往往数据库有多个,也就是分库、一主多备的功能。通过发布/订阅功能可以保证多个数据库之间数据的同步。

四、关于migrations、pubsub属性的意义

看完了PostgreSQL数据库的订阅发布功能,我分析migrations、pubsub这两个属性,和他们背后的两个模块,主要的目的在于大型网站多数据库的管理方面。migrations可以保证我们修改主数据的表、字段后,可以通过该模块自动改动其他数据库的结构。而pubsub的目的在于同步多个数据库之间的数据。

 

 

标签