Dan*_*scu 12 perl persistence json frameworks
我正在寻找一种解决方案来透明地持久化Perl数据结构(甚至不是对象,但对象支持是一个优势)没有循环引用.我对后端并不在乎,但我更喜欢JSON.对象的数量相对较少(几千个hashrefs,每个大约有5个密钥).通过"透明"持久性,我的意思是我不希望每次更新内存数据结构时都必须对存储后端进行更改.
以下是代码理想情况的样子:
my $ds;
...
# load the $ds data structure from 'myfile'
print $ds->{foo}->{bar}; # baz
$ds->{foo}->{bar} = 'quux';
... program dies, but the updated %hash has been persisted automatically in 'myfile'
# in another invocation
print $ds->{foo}->{bar}; # quux
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经看过了:
我只发现了一个有前途的模块,DBM :: Deep.代码就像在示例中一样,您可以使用加载数据结构
my $ds = DBM::Deep->new( "myfile.db" );
Run Code Online (Sandbox Code Playgroud)
但格式是二进制格式.这不是一个大问题,因为我可以使用JSON以人类可读的格式导出它.
所以,我错过了一个模块,我是否正确地解决了这个问题?
为了实现"透明度"目标,您将不得不将其抽象到框架中(如chambwez建议的那样)或使用tied变量,这些变量会在更新时将自己保存到磁盘.DBM哈希tie以这种方式使用,所以DBM::Deep可能是你最好的选择; 我所知道的其他一切都要求你明确告诉它何时写出数据和/或以性能名称缓存写入.