在一个相当大的遗留项目中,我已经将几个毛茸茸的模块重构为Moose类.这些模块中的每一个都需要数据库访问(懒惰)获取其属性.由于这些对象使用得相当多,我想减少冗余请求的数量,例如对于未更改的数据.
现在,我该如何正确地做到这一点?我有几个选择:
memcached5-10分钟的到期时间(可能不是太困难,但是对于懒惰属性来说很棘手)更新:KiokuDB可能在这里有所帮助,必须阅读有关属性的内容DBIx::Class(无论如何都需要完成)并在此级别上实现缓存(DBIC可能会消除大部分的痛苦)你会怎么做?你认为什么是理智的方式?是否在对象或ORM级别上缓存数据?
我想知道是否有人能够在Windows上成功使用KiokuDB.有了ActivePerl 5.12.2,我没有在ppm存储库中预先编译它.使用cpan,它在测试File :: NFSLock时停止了.不过,我能够用notest安装它.
下面的简单测试似乎有记录:
package Person;
use Moose;
has ['name', 'age'] => (is => 'ro');
package main;
use Data::Dump;
use KiokuDB;
my $dir = KiokuDB->connect("hash");
{
my $scope = $dir->new_scope;
my $obj = Person->new(name => 'Joe', age => 34);
my $data_id = $dir->store($obj);
warn $data_id; # 6702A424-6BF6-1014-B0F5-EC4CE5BB15D7
my $got = $dir->lookup($data_id);
dd $got; # bless({ age => 34, name => "Joe" }, "Person")
}
Run Code Online (Sandbox Code Playgroud)
有人用它来做Windows上更大的东西,比如DBI后端吗?你认为它是否足够稳定/可用于一些较小的项目?
请至少提供一些使用方法的详细信息,以便我有一个与我的计划相符的想法.
我想确保scope正确地获得KiokuDB的概念.
假设我想从db1加载一个对象并将其存储在db2中.我必须同时让两个范围"开放"吗?
KiokuDB教程 提到的弱引用究竟是什么?
它们与"正常"参考文献有何不同?