Different database backends

For local Indico install I’d like to avoid management hassle with PostgreSQL server if possible and use an existing database service which is managed by our local DBAs. Problem is that our site only offers Oracle and MySQL and not Postgres. My understanding is that currently Indico can only work with Postgres. Are there any future plans to support other SQLAlchemy backends or is it too tightly tied to a particular backend. I could potentially spend some time on adding Oracle support if it is not too much effort.

No, there are no plans to support different databases. Even with just two databases you are stuck with the lowest common denominator - so as soon as you use anything “fancy” (ie useful for more complex queries) you likely end up writing queries twice. And for those cases SQLAlchemy isn’t very helpful either.

BTW: Unless your instance is big, you can most likely just use a local Postgres server (pretty much zero configuration needed - see our install guide) without noticeable performance issues.

Hi ThiefMaster,

thanks for response! I realize that installing and running Postgres it rather trivial, my worry is mostly about high availability and data backups which is less trivial and needs more effort. We have local database solution for that but again it’s only Oracle and MySQL, convincing local IT to run production-level Postgres service for us is probably a no-go as they don’t have Postgres experience yet.

I have some experience with SQLAlchemy and doing non-trivial stuff with more than one backend. Do you by chance have a list of instances where you have Postgres-specific solutions? I could potentially look and maybe try to add Oracle implementation for that.

Andy

We tried doing that at the beginning, and ended up removing the little bit we had a few years ago

The problem with that is maintenance… even if you managed to add Oracle-compatible versions everywhere (but good luck doing that e.g. for jsonb columns), you’d need to maintain a fork of Indico since I think it’s very unlikely that we’d accept any patches for this (as we would then need to maintain them and test against it).

I certainly would not want to maintain a fork forever. If there is no interest from your side then I guess there is little reason for me to spend my time on that.

If you allow me to chime in, I think that the effort required to make (and maintain) Indico Oracle or MySQL-compatible is really not worth it. Maintaining it backend-agnostic is also just not feasible, as we’ve seen in the past. It’s a choice between having a high level interface and one which is actually performant and easy to maintain.

1 Like