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的目的在于同步多个数据库之间的数据。