Tie::DB_Lock ties hashes to
databases using shared and exclusive
locks. This module, written by Ken Williams, solves the problems
The main difference with this module is that
Tie::DB_Lock copies a DBM file on read. Reading
processes do not have to keep the file locked while they read it, and
writing processes can still access the file while others are reading.
This works best when you have lots of long-duration reading processes
and a few short bursts of writing.
The drawback of this module is the heavy I/O performed when every
reader makes a fresh copy of the DB. With big DBM files this can be
quite a disadvantage and can slow down the server considerably.
An alternative would be to have one copy of the DBM image shared by
all the reading processes. This would cut the number of files that
are copied and put the responsibility of copying the read-only file
on the writer, not the reader. However, some care would be required
to make sure that readers are not disturbed when a new read-only copy
is put into place.