Jabber and xdb_sql
One of the most exciting things about jabber is how easy it is to plug in components to it. xdb is the component that is responsible for storage of user information and there are three popular xdb components. There are xdb_file, xdb_sql, and xdb_ldap with xdb_sql being the most exciting with it's superb architecture and fantastic design.
Not only can you use xdb_sql to store all user information in a databse, you can change the database design at the drop of a hat as well!!. All the queries in xdb_sql have been defined with in an xml document. Within this document you can specify your databse type (mysq, pgsql etc) and the queries for authentication, roster addition etc. This makes it possible for you to change your database design without havnig to make code changes.
The database being a plug and play component of xdb_sql makes it possible to integrate jabber with other products via the backend. Often you will not have to edit one line of code. Despite this some of the jabber transports themselves don't really work too well with xdb_sql. This is a great pity because it has prevented xdb_sql from recieving the full recognition it deserves. if you are interested in making it work with transports please see the howto on this site.