I recommend the third option: DBI with DBD::RAM. Arrange it so your process keeps running (is a daemon. or uner mod_perl) and loads all the data on startup. Restart the daemon everytime you change the data.
It may not be possible to do this, but if you do it'll be faster than both the methods you mention.
____________________
Jeremy
I didn't believe in evil until I dated it.