我经常需要在大型PostgreSQL数据库上的单个事务中执行复杂的 sql 脚本,我想验证事务期间更改的所有内容。
“手动”验证每个表上的每个条目需要很长时间。
在脚本之前和之后将数据库diff
转储为纯 sql 并在转储上使用并不是一个真正的选择,因为每个转储都是关于50G
数据的。
有没有办法显示在单个事务中添加、删除或修改的所有数据?
我写了一个简单的基于Moose的课程Document
.这个类有两个属性:name
和homepage
.
该类还需要提供一种方法do_something()
,该方法基于该homepage
属性从不同的源(如网站或不同的数据库)检索和返回文本.
由于将有很多完全不同的实现do_something()
,我希望将它们放在不同的包/类中,并且每个类都应该知道它是否负责该homepage
属性,或者它是否负责.
到目前为止我的方法涉及两个角色:
package Role::Fetcher;
use Moose::Role;
requires 'do_something';
has url => (
is => 'ro',
isa => 'Str'
);
package Role::Implementation;
use Moose::Role;
with 'Role::Fetcher';
requires 'responsible';
Run Code Online (Sandbox Code Playgroud)
一个被调用的类Document::Fetcher
,它提供了一个默认的implmentntation do_something()
和常用的方法(比如HTTP GET请求):
package Document::Fetcher;
use Moose;
use LWP::UserAgent;
with 'Role::Fetcher';
has ua => (
is => 'ro',
isa => 'Object',
required => 1,
default => sub { LWP::UserAgent->new }
);
sub …
Run Code Online (Sandbox Code Playgroud)