Cells のデータベース設定

コンテキスト

個々の Cell が 3 つの論理データベースを持つべきか、単一データベースを持つべきかについて、この Issue で議論しました。

決定事項

レガシー Cell アーキテクチャとの整合性を保つため、Cell には3 つの論理データベース(main、ci、sec)を持つ単一 DB インスタンスを作成することを決定しました。

このアプローチは未知の要素を減らし、Cell からレガシー Cell へのより簡単な PostgreSQL ロールバックパスを提供します。

結果と影響

  • 既存のレガシークラスターと整合した均一な Cell クラスターアーキテクチャを維持します。
  • 移行が 3→3 になるため(3→1 ではなく)、組織の PostgreSQL データ移行が簡素化され、ロールバックも同じパターンに従います。
  • こちらのコメントで説明されているように、組織データの移行は分解されたデータベースを使用する Cell で機能します。
  • こちらのコメントで説明されているように、ディザスタリカバリのための Geo は分解されたデータベースを使用する Cell で引き続き機能します。

代替案

Cell に単一の論理データベース(main)を使用する

以下の理由で却下:

  • gitlab_shared_org スキーマを持つ既存データの移行の課題が生じる。
  • 一部の機能が分解されたデータベースアーキテクチャに依存している可能性があるため、未知の要素が増える。
  • Cell からレガシー Cell へのロールバックが複雑になる(どのテーブルがどのデータベースに属するかを識別する 1→3 データ変換が必要)。