The OHDSI tools support a wide array of database platforms (see the current list supported by HADES here). Most interactions with the database are rather complex (more than just SELECT FROM WHERE
), offloading large data manipulations to the server. Because of this, adding support for a new database platform is non-trivial. It starts with adding some rules to SqlRender, but as most platforms have their own peculiarities (e.g. no temp tables, no ability to insert data into existing tables, no ability to delete rows in tables, limited number of inserts per minute, no support for quanitles), each platform often requires changes throughout the toolstack. Because there is no guarantee that code will work on a platform, we also need extensive unit tests against all platforms.
At the start of the year we imposed a new rule, that only databases for which a testing server was available could continue to be included. Because of this new rule, some testing servers were stood up by the community, while other platforms have now been deprecated.
Even with the testing servers, maintaining support for all these platforms puts a large burden on the OHDSI open source software developers. Unit tests need to be written and maintained, and when a unit test fails, the code has to be debugged.
Now I’ve been contacted by a new database platform vendor, who would like us to add support for their platform. They are friendly, and willing to write pull requests where necessary. However, just navigating them through the process, and reviewing and amending their pull requests will be work.
Which is why I’ve declared that, for now, no new database platforms will be added. I know this sucks, but I simply did not sign up to spend all my time managing support for database platforms. If the community feels it is important to continue to expand the set of supported databases, we’ll need a new person who can dedicate their full time to this. This person’s job would include the following tasks:
- Develop and document a procedure by which new database platforms are expected to be added.
- Enforce the procedure (e.g. harass vendors to provide testing servers)
- Review and revise pull requests related to new database platforms.
- Copy and adapt existing unit tests to the new platform.
- Help debug (and reroute to the right person) issues arising out of specific database platforms.
This person’s skillset should probably include:
- Some project management
- Some R
- SQL