シリアル化したいいくつかのMooseオブジェクトと他のいくつかの単純なハッシュオブジェクト(ハッシュ、配列)があります。
最初はシンプルなものを使いました
my $obj_store_file = nstore($obj);
と
my $obj = retrieve($obj_store_file);
これはうまくいきました。
後で、私はとについて見つけましMooseX::Storage
たKiokuDB
。私はそれらを使ってそれらが持ついくつかの利点を楽しんでみましたが:
MooseX::Storage
複数回参照されるオブジェクトを再作成したようです。たとえば、シリアル化されたオブジェクトの1つにいくつかの属性が含まれており、それぞれが別のオブジェクトの同じインスタンスを参照しています。シリアル化する前は、これらの参照はすべて明らかに同じです。つまり、すべて同じオブジェクトを指しています。を使用したシリアル化/逆シリアル化の後MooseX::Storage
、この1つのオブジェクトが複製され、各参照がオブジェクトの別のインスタンスを指します。MooseX::Storage
オブジェクトグラフを表現するのは適切ではなく、試してみたいと言われましたKiokuDB
。KiokuDB
私はそうしましたが、自分のニーズにはやり過ぎだと感じました。DBが提供できるすべての凝ったものは必要ありません。残念ながら、私のオブジェクトの1つは非常に大きく、デフォルトを使用してシリアル化するとメモリが詰まるため、カスタムシリアライザーを作成するか、その「データ」部分を個別に保存してからコスチュームを作成する必要があるようKiokuX::Module
です...これもかなりやり過ぎです。
だから、私は昔ながらのStorableまたはYAMLに戻ります。KiokuDB
私の質問は単純です。はい、 (特にオブジェクトグラフを維持するという事実)とおそらくMooseX::Storage
(後者については実際には何も見つかりませんでしたが)にもいくつかの利点があります。しかし、これらの利点は私には実際には役に立たないので、StorableまたはYAMLを使用しない理由はありますか?
言い換えれば、この方法で(Moose)オブジェクトを保存することに何か問題がありますか?それは「違法」ですか?