It is possible to directly manipulate the ListManager database. Much of the data in the database is related
to other data, so changes to one field might require a change to another field in another table. Making
modifications without understanding the data dependencies and field definitions can lead to unexpected
results. It is highly recommended that users test their scripts on a private test list before running
them on public lists.
Changing the data in tables while ListManager is running is a little dangerous but should generally
work. You need to understand the database design well enough to know if changes made to the tables will
have an immediate effect or not. In some cases, ListManager is regularly polling a table for changes,
but in other cases, it won’t pick up a change until the system is restarted.
Programmers should feel free to work with the members_table. Many companies want to be able to add or change the membership information in the members_ table dynamically, and doing so generally should not cause problems. Programmers are encouraged to import their membership data directly into the database server using the native tools provided by the database. Using these tools results in import speeds of millions of records per hour, which is faster than any other method available through ListManager.
While ListManager is expecting users to add columns to the members_ table, it will very likely cause errors if existing columns/indexes are changed, or the schema is modified in other tables. Developers interested in making demographic data available for mail merging or for the purpose of determining whom to send mail are encouraged to add columns to the members_ table or to a new table. ListManager has the easy ability to pull data from user-provided tables during the mail merge process.
All tables are designed by Lyris for the purpose of making ListManager as fast and powerful as it is today. As the technology demands changes, any of the tables used by ListManager today may be changed in subsequent versions of ListManager, so application programmers need to keep this in mind. Lyris offers no guarantees that the schema used for one version of ListManager will be the same for another version.