This has nothing to do with mod_perl vs cgi. Your user-specific data can be saved on the server with a simple database or on clients with cookies, and it's up to you to determine what format you save it in. If other users or their 'agent programs' need access to a user's data and you're only on one server, then the database approach or shared memory data structures are the way to go. SHM access is raw Perl and it's quite fast and easy if only the user's web access can change his shared data. If you wish to access this all from any client, a Perl program on any machine on the net can access a MySQL or PostgreSQL machine using the appropriate module, as long as that access is allowed by the database and its host's deny/allow rules.