MidPoint was designed with a flexible implementation of its repository subsystem, which allows support for several types of storage technologies. The only storage technology that midPoint supports currently supports is relational database. Relational database always was, and it still is, the reliable workhorse of many identity management solutions, including midPoint.
Since its very beginning, midPoint was using a very generic approach to relational databases. This approach enabled support for several databases using the same code base. This worked very well for many years. However, there is also a drawback. Generic database code must strictly adhere to standardized SQL and it cannot take advantage of any database-specific features.
As midPoint deployment grow in complexity and size, we are reaching the boundaries of generic database support approach. Therefore we have to specialize our implementation and choose our champion among the database engine.
We have chosen PostgreSQL database. PostgreSQL is undoubtedly one of the best open source database engines. As midPoint is open source project, it was crucial to support an open source database. As we have doubts about the open source character of MySQL and the capabilities and community strength of MariaDB, PostgreSQL was a clear choice. That is also the reason that we have decided to focus on PostgreSQL and PostgreSQL was a recommended database engine since midPoint 4.0 release.
We have long-term plans to create special repository implementation for PostgreSQL database engine. This implementation will be able to fully utilize PostgreSQL features, therefore it can provide higher performance, scalability and efficiency.
However, re-working our repository implementation is no easy task. It will take time and energy. It can be difficult to focus our energies on that while at the same time we had to support a horde of other database engines. Therefore we have decided to reduce the number of database engines that we support in midPoint. It is still not clear how exactly will the future database support for midPoint look like. But few things are clear:
- PostgreSQL is the priority. PostgreSQL will be supported and recommended for all new midPoint versions. Newest PostgreSQL releases will be supported by new midPoint releases (given enough time to test new PostgreSQL releases).
- Support for MySQL and MariaDB is deprecated since midPoint 4.1. We plan to drop support for MySQL and MariaDB. There is no specific date to drop the support, but it will happen eventually. Users of MySQL and MariaDB should migrate to PostgreSQL soon.
- Other commercial database engines (Oracle, Microsoft SQL) remain in the gray zone. We have not made any decision about these. They are currently supported. However, it is quite likely that these databases will not be included in standard midPoint support service. Support services for these databases will need to be purchased separately - to compensate for extra effort supporting them. It is quite clear, that these database engines are not our priority. We currently do not plan to support any newer database versions for these commercial databases. Users that require clear database support plans should choose PostgreSQL database instead.
- Support for H2 is likely to remain for development and demonstration purposes.