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