加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 我不应该使用Storable或YAML序列化我的(Moose)对象吗?

发布时间:2020-12-16 06:12:34 所属栏目:大数据 来源:网络整理
导读:我有一些Moose对象和一些其他简单的哈希对象(哈希,数组)我想序列化. 起初,我用了一个简单的 my $obj_store_file = nstore($obj); 和 my $obj = retrieve($obj_store_file); 这很好用. 后来,我发现了MooseX :: Storage和KiokuDB.我尝试使用它们享受一些好处,
我有一些Moose对象和一些其他简单的哈希对象(哈希,数组)我想序列化.

起初,我用了一个简单的

my $obj_store_file = nstore($obj);

my $obj = retrieve($obj_store_file);

这很好用.

后来,我发现了MooseX :: Storage和KiokuDB.我尝试使用它们享受一些好处,但是:

> MooseX :: Storage似乎重新创建了多次引用的对象.例如,我的一个序列化对象包含一些属性,每个属性引用另一个对象的同一个实例.在序列化之前,所有这些引用显然是相同的 – 它们都指向同一个对象.在使用MooseX :: Storage进行序列化/反序列化之后,这个曾经单个对象被复制,每个引用都指向该对象的另一个实例.我被告知MooseX :: Storage不适合表示对象图,我可能想尝试KiokuDB.
>我做到了,虽然我觉得KiokuDB对我的需求来说太过分了.我不需要DB可以提供的所有花哨的东西.不幸的是,由于我的一个对象非常庞大并且在使用默认值进行序列化时会在内存中出现问题,因此我似乎必须编写一个自定义序列化程序或单独存储其“数据”部分然后再写一个服装KiokuX :: Module …矫枉过正.

所以,我回到了’可存储或YAML’.我的问题很简单:是的,KiokuDB有一些好处(特别是它维护对象图的事实),也许还有MooseX :: Storage(虽然我真的找不到后者).但是,鉴于这些好处对我来说并不实用,有没有理由不使用Storable或YAML?

换句话说,以这种方式存储(Moose)对象有什么问题吗?这是’非法’吗?

解决方法

我的经验是,这取决于你为什么要序列化数据.我喜欢Storable for program state,包括窗口大小/位置等.我更喜欢YAML用于配置数据或您可能想要与应用程序的另一个副本交换的任何内容. (即在用户之间共享 – 具有不同版本的Perl或Storable的用户可能无法读取可存储文件.)可存储支持对象图(假设冻结/解冻正确完成).我不确定YAML.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读