新 Keycloak 存储支持的数据库

2022 年 2 月 24 日,作者:Stian Thorgersen

维护对各种关系数据库的广泛支持成本很高,更重要的是,这限制了数据库能够得到的支持程度。

考虑到这一点,我们正在考虑在不同级别上支持数据库:一级、二级和社区支持。

请填写这份调查问卷,因为我们希望尽可能多地收集反馈。

一级数据库

一级数据库的目标是提供更好的调优和测试水平、更好的默认设置以及更好的文档。我们还将考虑测试所选一级数据库的不同版本和变体,例如云服务。

一级数据库将是我们扩展和调优数据库以适应大规模、高可用性部署(包括多区域部署)时所关注的解决方案。

作为一级数据库,我们的目标是支持一个传统的关系数据库和一个云原生数据库。考虑到这一点,我们选择了 PostgreSQL 和 CockroachDB 作为最佳候选者。

PostgreSQL 是一个高质量的完全开源的数据库,具有许多受支持的产品,例如

  • Azure Database for PostgreSQL

  • Amazon RDS for PostgreSQL

  • BigAnimal

  • Cloud SQL for PostgreSQL

  • Crunchy Bridge

  • Crunchy PostgreSQL for Kubernetes

  • EnterpriseDB

CockroachDB 是一个云原生开源数据库,与 PostgreSQL 兼容。云原生意味着它可以水平扩展,包括跨多个区域。有一些竞争性解决方案,但不如它成熟,PostgreSQL 兼容性也不如它流畅。显然,也有 NoSQL 和其他非关系数据库理论上可能很适合 Keycloak,但支持它们需要付出更多的额外努力。

还值得一提的是,我们仍然将 Infinispan 视为我们的缓存层,但我们的目标也包括支持在较小的 PostgreSQL 部署和较大的 CockroachDB 部署中,无需 Infinispan 即可运行 Keycloak。

二级数据库

二级数据库的目标是提供与我们目前在 Keycloak 中为任何数据库提供的支持基本相同的支持。我们将仅测试一个版本,不会有特定于数据库供应商的文档,也不会在我们这边进行任何额外的调优。

我们希望 Keycloak 社区的大多数成员能够迁移到一级数据库,并且最终这将对每个人来说都是一个更好的解决方案。因此,我们目前不打算长期提供任何二级数据库,而是计划随着时间的推移逐步淘汰对 MySQL、MariaDB、SQL Server 和 Oracle 的支持。

社区支持的数据库

如果社区有兴趣支持其他数据库,包括非关系数据库,我们很乐意讨论并弄清楚这会是什么样子。包括使安装社区维护的数据库变得容易,以及持续测试集成。