Estoy buscando una solución transparente persisten las estructuras de datos Perl (ni siquiera los objetos, pero el soporte de objeto sería un plus) sin referencias circulares. No me importa mucho el back-end, pero prefiero JSON. La cantidad de objetos sería relativamente baja (unos pocos miles de hashrefs con aproximadamente 5 claves cada uno). Con la persistencia "transparente" quiero decir que no quiero tener que realizar cambios en el backend de almacenamiento cada vez que actualizo la estructura de datos en memoria.Persistencia simple, moderna, robusta y transparente de estructuras de datos para Perl
Así es como el código lo ideal sería el siguiente aspecto:
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
Hasta ahora he visto: Perl Object-Oriented Persistence compilación de módulos de
- de Dave Rolsky - sin cambios desde 2003
- Brian d foy's MasteringPerl - Chapter 14. Data Serialization - habla sobre DBM :: Deep, un buen candidato. Ojalá hubiera una diferencia más clara entre la serialización y la persistencia transparente.
- Persistent - sin cambios desde el año 2000
- SPOPS - abandonada desde 2004
- SLOOPS sólo tiene una versión en CPAN, de 2005
- Tangram - parece abandonado demasiado
- Tie::File::AsHash qué persistencia transparente, pero sólo es compatible con single-level hashes
- MooseX::Storage, Storable y JSON se ven bien, pero solo son de serialización, no persisten marcos de ENCE
- DBIx::Class, Class::DBI, Fey::ORM, ORM, Rose::DB son creadores de mapas OO-RDBM, y I'd rather not use a database backend
- DB_File requiere BerkeleyDB
- KiokuDB parece demasiado complejo para la tarea
sólo he encontrado uno módulo prometedor, DBM::Deep. El código es como en el ejemplo, y puede cargar la estructura de datos con
my $ds = DBM::Deep->new("myfile.db");
Sin embargo, el formato es binario. No es un gran problema, ya que puedo usar JSON para exportarlo en un formato legible para las personas.
Entonces, ¿me falta un módulo y me estoy acercando al problema correctamente?
Estoy buscando una persistencia transparente (espero que este sea el término correcto) Por persistencia "transparente" quiero decir que no quiero tener que realizar cambios en el back-end de almacenamiento cada vez que actualizo la memoria estructura de datos. He editado la pregunta; Gracias por señalar esto. –