新的 Keycloak 存储支持的数据库

2022 年 2 月 24 日 作者 Stian Thorgersen

维护广泛的关系型数据库支持既昂贵,更重要的是限制了数据库的良好支持程度。

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

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

一流数据库

一流数据库的目标是提供更高水平的调整和测试、更好的默认值和更详细的文档。我们还将考虑对选定的数据库进行不同版本和变体的测试,例如云服务。

一流数据库将是我们在扩展和调整数据库以适应大规模部署(包括高可用性和跨区域部署)时所期待的解决方案。

作为一流数据库,我们旨在支持一个传统的关系型数据库和一个云原生数据库。为此,我们选择 PostgreSQL 和 CockroachDB 作为最佳候选者。

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

  • Azure Database for PostgreSQL

  • Amazon RDS for PostgreSQL

  • BigAnimal

  • Cloud SQL for PostgreSQL

  • Cruncy Bridge

  • Cruncy PostgreSQL for Kubernetes

  • EnterpriseDB

CockroachDB 是一款云原生开源数据库,具有 PostgreSQL 兼容性。云原生意味着它可以水平扩展,包括跨多个区域。也有一些竞争对手的解决方案,但尚未成熟,并且 PostgreSQL 兼容性不那么流畅。当然也有一些 NoSQL 和其他非关系型数据库,理论上可能非常适合 Keycloak,但支持起来需要付出很多额外努力。

值得一提的是,我们仍然将 Infinispan 视为我们的缓存层,但我们也计划支持在没有 Infinispan 的情况下运行 Keycloak,对于使用 PostgreSQL 的小型部署和使用 CockroachDB 的大型部署来说,这都是可行的。

二流数据库

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

我们希望大多数 Keycloak 社区能够迁移到一流数据库,最终这将是所有人的最佳解决方案。因此,我们目前不打算长期提供任何二流数据库,而是逐步停止对 MySQL、MariaDB、SQL Server 和 Oracle 的支持。

社区支持的数据库

如果社区对支持其他数据库(包括非关系型数据库)感兴趣,我们希望讨论并找出这将如何实现,包括方便地安装社区维护的数据库以及持续测试集成。