このプロジェクトについて
pgfathomはPostgreSQLスキーマ考古学の読み取り専用コマンドラインユーティリティです。外部キーとして宣言されていないリレーションシップを、カタログ、ビューや関数からの使用実績、命名規則、プランナ統計を検査することで発見します。データベースへの書き込みは行わず、本番環境での安全な運用を目的としています。
このツールが解決する問題は、多くのレガシーPostgreSQLデータベースに隠れた参照整合性があり、つまり外部キー制約を持たずに他テーブルを指す列や、NOT VALIDで作成されて未検証のままの制約が存在することです。これにより∆などのツールでモデルが見えず、孤立行が unnoticed に蓄積してしまいます。
pgfathomの機能:
* discoverモードでは、終端子レポート(broken、confirmed、weak、unvalidated、detectedの判断)、バージョン付きJSONモデル、レビュー可能な.sqlファイルを出力します。確認済み関係には、重大なロックを避けるためにVALIDATE CONSTRAINTが分割されたDDLと、必要な場合にCREATE INDEX CONCURRENTLYが含まれます。壊れた関係はコメント付きDDLとして出力され、ユーザーが孤児行の処理を決定できます。
* 命名プロファイル(pt‐br、en、es)をサポートし、スキーマがまだ宣言しているキーから接辞規則を直接読み取ることができます。ユーザーはカスタムTOMLプロファイルを供給できます。
* 結合述語はビュー定義と関数本文(および可能であればpg_stat_statements)から抽出され、名前の一致では到達できない関係を見つけます。
* 検証パイプラインは6ステージから構成されます: カタログの読み取り、使用実績のマイニング、プロファイルを用いた候補生成、メタデータでのスコアリング、統計によるプリフィルター、集約を用いた最終的なデータ検証。
インストール方法にはDEB/RPMパッケージ、Homebrew、Dockerイメージ、またはGoによるソースビルドがあります。ツールは読み取り専用で、ステートメントとロックタイムアウトを尊重し、並行性を制限し、スキーマとテーブルのカバレッジを報告するため、沈黙を健全さと誤認しません。
スコープはデフォルトでpublicスキーマですが、--all-schemas、--schema、--exclude-schema、--excludeフラグで拡張可能です。setupコマンドは初回ユーザーを接続、スキーマ選択、検証深度、出力先までの案内ガイドします。
正確性は回収率で測定されます: 完全な外部キーを持つスキーマからそれらを剥ぎ取り、pgfathomを実行し、回収された割合を報告します。GitLab、自治体システム、Discourseをカバーする公開コルパス上でパフォーマンスを示し、部分的(半数のキーを除去)およびグリーンフィールド(キー非宣言)の両 régime で結果を公表しています。各ステージの貢献度(プロファイルのみ、命名検出、結合マイニング)も報告されます。
出力には、各判断ごとのカウント、分析済みテーブル、統計プリフィルター結果を含む端末サマリー、タイムスタンプ付きバージョン化JSONモデル、および確認済みキー用DDL(レビュー後に実行可能)とコメント付きDDL(任意の行動前に要検討)を含む.sqlファイルが含まれます。生成されるすべてのSQLは実行前にレビューされることを意図しています。
つまり、pgfathomは静かで文書化されていないスキーマを可視で実用的なモデルに変え、壊れた整合性の解消に必要な正確なクエリと、欠落した制約を復元するための安全なDDLを提供します。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.