2022年2月24日 Stian Thorgersen 著
幅広いリレーショナルデータベースのサポートを維持することはコストがかかり、さらに重要なこととして、データベースをどの程度適切にサポートできるかを制限することにもなります。
それを念頭に置いて、データベースを異なるレベルでサポートすることを検討しています。ファーストクラス、セカンドクラス、そしてコミュニティです。
可能な限り多くのフィードバックを収集したいと考えていますので、こちらのアンケートにご記入ください。
ファーストクラスデータベースの目的は、より高度なチューニングとテスト、より優れたデフォルト設定、そしてより良いドキュメントを提供することです。また、クラウドサービスなど、選択されたファーストクラスデータベースの異なるバージョンやバリアントでのテストも検討します。
ファーストクラスデータベースは、大規模なデプロイメントや高可用性、さらにはマルチリージョンデプロイメントに対応するためにデータベースをスケーリングおよびチューニングする際に、私たちが注目するソリューションとなります。
ファーストクラスデータベースとして、従来の relational database を1つ、そしてクラウドネイティブデータベースを1つサポートすることを目指しています。これを念頭に置いて、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 との互換性もそれほど洗練されていません。理論的には Keycloak に適した NoSQL やその他の非リレーショナルデータベースもありますが、サポートするにはさらに多くの労力が必要です。
キャッシュ層として Infinispan を引き続き検討していますが、PostgreSQL を使用した小規模なデプロイメントや CockroachDB を使用した大規模なデプロイメント向けに、Infinispan なしで Keycloak を実行することも目指していることに言及する価値があります。
セカンドクラスデータベースの目的は、今日の Keycloak であらゆるデータベースに提供しているサポートとほぼ同じサポートを提供することです。テストは1つのバージョンのみ、データベースベンダー固有のドキュメントや、当社側での追加のチューニングはありません。
Keycloak コミュニティの大多数がファーストクラスデータベースに移行できることを願っており、最終的にはそれがすべての人にとってより良いソリューションになるでしょう。そのため、現在、セカンドクラスデータベースを長期的に提供する予定はなく、むしろ MySQL、MariaDB、SQL Server、Oracle のサポートを段階的に廃止していく予定です。
非リレーショナルデータベースを含む、追加のデータベースをサポートすることにコミュニティからの関心がある場合、コミュニティがメンテナンスするデータベースを簡単にインストールできるようにすることや、統合の継続的なテストを含め、これがどのような形になるかについて議論し、検討したいと思います。