Stian Thorgersen 於 2022 年 2 月 24 日撰寫
維持對各種關聯式資料庫的支援既耗費成本,更重要的是,也會限制對資料庫的支援程度。
有鑑於此,我們正考慮以不同的層級支援資料庫:第一級、第二級和社群支援。
請填寫這份問卷,我們希望盡可能收集更多回饋。
第一級資料庫的目標是提供更好的調整和測試水準、更好的預設值和更好的文件。我們還將考慮使用所選第一級資料庫的不同版本和變體進行測試,例如雲端服務。
第一級資料庫將是我們在擴展和調整資料庫以適應具有高可用性的高規模部署(包括多區域部署)時的首選解決方案。
作為第一級資料庫,我們的目標是支援一個傳統關聯式資料庫和一個雲原生資料庫。因此,我們已選擇 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 相容。所謂雲原生是指它可以水平擴展,包括跨越多個區域。有一些具競爭力的解決方案,但不如 CockroachDB 成熟,且 PostgreSQL 相容性較差。顯然,也有一些 NoSQL 和其他非關聯式資料庫在理論上很適合 Keycloak,但需要額外付出許多支援工作。
還值得一提的是,我們仍然將 Infinispan 作為我們的快取層,但也致力於支援在較小的部署中使用 PostgreSQL,在較大的部署中使用 CockroachDB 而無需 Infinspan 來運行 Keycloak。
第二級資料庫的目標是提供與目前 Keycloak 中對任何資料庫提供的支援大致相同的支援。我們只會測試一個版本,不會有資料庫供應商特定的文件,也不會在我們這邊進行任何額外調整。
我們希望大多數 Keycloak 社群能夠遷移到第一級資料庫,並且最終這將對每個人來說都是更好的解決方案。因此,我們目前不打算長期提供任何第二級資料庫,而是逐步淘汰對 MySQL、MariaDB、SQL Server 和 Oracle 的支援。
如果社群有興趣支援其他資料庫,包括非關聯式資料庫,我們希望討論並找出如何實現這種支援。包括讓安裝社群維護的資料庫變得容易,以及持續測試整合。