Of course, the most advanced solution is a relational database. But even though it provides the best solution in many cases, it's not always the one you should pick. You don't need a sledgehammer to crack a nut, right?
Relational databases come in different implementations. Some are very expensive and provide many tools and extra features that aren't available with the cheaper and free implementations. What's important to keep in mind is that it's not necessarily the most expensive one that is the best choice in a given situation. Just as you need to choose the right database structure, you need to choose the right relational database. For example, ask yourself whether you need speed, or support for transactions, or both.
It makes sense to try to write your code in such a way that if later in the course of development you discover that your choice of relational database wasn't the best, it will be easy to switch to a different one.
mod_perl greatly helps work with relational databases, mainly because it allows persistent database connections. We'll talk extensively about relational databases and mod_perl in Chapter 20.