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