Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

looking for light-weight data persistence solution in perl

Tags:

perl

In my app I need to store some simple data both in memroy and in disk. A real database will be overkill in my case, so I need lighter one to handle the simple data persistence requirement. I do some google search by myself, and found something interesting like DBM and DBI CVS, etc. but since there are too many options there so it is difficult for me to make the actuaaly choice, so I'd like ask you here for the "best-practice" like light-weight data perisistence solution in perl.

like image 400
Haiyuan Zhang Avatar asked Jun 21 '10 02:06

Haiyuan Zhang


2 Answers

You have several options:

  • Storable is a core module and is very efficient. It has some problems with portability, for example someone using an older version of Storable may not be able to read your data. Also, the endianness of the system creating and retrieving that data is important. The network order stoarge options help reduce the portability issues. You can store an arbitrary nested data structure to a file or string and restore it. Storable is supported only by Perl.

  • YAML is a text based format that works like storable--you can store and restore arbitrary structures to/from YAML files. YAML is nice because there are YAML libraries for several languages. It's not quite as speedy or space efficient as Storable.

  • JSON is a popular data exchange format with support in many languages. It is very much like YAML in both its strengths and weaknesses.

  • DBD::SQLite is a database driver for the DBI that allows you to keep a whole relational database in a single file. It is powerful and allows you work with many of the persistence tools that are aimed at other databases like MySQL and Postgres.

  • DBM::Deep is a convenient and powerful perl only module that allows efficient retrieval and modification of small parts of a large persistent data structures. Almost as easy to use as Storable, but far more efficient when dealing with only small portions of a large data structure.

Update: I realized that I should mention that I have used all of these modules and depending on your particular needs, any of them could be "the right choice".

like image 109
daotoad Avatar answered Nov 10 '22 06:11

daotoad


You might want to try Tie::Storable. Then it's as simple as addressing a hash.

If you're not looking to store a ton of data and you're OK loading everything all at once at program startup, it might be the way to go.

If you're looking for something more sophisticated but still light weight, a lot of people (including myself) swear by SQLite.

like image 7
makenai Avatar answered Nov 10 '22 04:11

makenai