The simplest of Chapter 11’s directory modules merely persists Perl data structures to a text file. I used this example to make a point about data prototyping. Groupware data stores, including directories, need to evolve as quickly as applications do. They also typically need to model complex relationships that can be tedious to express in an LDAP or SQL schema. When you’re using a scripting language to prototype an application, it can make sense to prototype the application’s data store too, as persistent objects expressed directly in that same scripting language. You may eventually need to migrate to a more robust data store, but only if the application proves out and even then only if transactional load or concurrency issues require that you do.
Java offers particularly nice support for managing web-accessible data structures directly in memory and for serializing them to disk storage as needed. We used this approach in Chapter 10, in servlets that present web APIs to Java objects. If you go this route, you can upgrade from simple Java serialization to a commercial object database that does offer transaction support and concurrency controls.