Geri qayıt
Safe / Not Safe Postgres miqrasiyalarını yayımdan əvvəl yoxlayır
SiTech AI Team2 წთ. საკითხავი

Safe / Not Safe Postgres miqrasiyalarını yayımdan əvvəl yoxlayır

Açıq mənbəli yerli alət Postgres miqrasiyasını brauzerdə libpg_query ilə təhlil edir və dəyişiklik istehsala çatmadan əvvəl SAFE, NOT SAFE və ya NEEDS CONTEXT qərarı verir; backend yoxdur, SQL jurnalı yoxdur.

Yayımdan əvvəl qərar

Safe / Not Safe (safenotsafe.dev) PostgreSQL miqrasiyaları üçün tamamilə brauzerdə işləyən yoxlayıcıdır. Tərtibatçı miqrasiyanı redaktora yerləşdirir, SQL Web Worker daxilində WebAssembly-yə derlənmiş libpg_query parseri ilə təhlil olunur və alət üç qərardan birini qaytarır: SAFE, NOT SAFE və ya NEEDS CONTEXT. Layihənin README-sinə görə məqsəd qəsdən dardır: sxem dəyişikliklərinin tanış tələlərini istehsala çatmadan tutmaq.

Qərardan əvvəl tətbiq iki kontekst sualı verir: hədəf cədvəldə nə qədər sətir var (50 mindən az, 50 mindən 5 milyona qədər, 5 milyondan çox) və yayım aləti DDL-i tranzaksiyaya sarıyırmı. Üçüncü qərarın səbəbi budur: bəzi əmrlər yalnız müəyyən cədvəl ölçüsündə və ya tranzaksiya blokunun içində risklidir.

Qaydalar kataloqu nə axtarır

Qaydalar TypeScript ilə yazılıb və repo on iki yoxlama sadalayır: adi CREATE INDEX ilə CREATE INDEX CONCURRENTLY fərqi, tranzaksiya sarğısı içində CONCURRENTLY, default dəyərli əlavə edilmiş sütunlar, ALTER COLUMN TYPE səbəbilə cədvəlin yenidən yazılması, NOT VALID olmadan əlavə edilən xarici açarlar, VALIDATE CONSTRAINT, SET NOT NULL, DROP COLUMN, ad dəyişiklikləri, birbaşa unique constraint qurulması, TRUNCATE və VACUUM FULL ilə CLUSTER kimi yenidən yazma əmrləri.

Hər birinin real qiyməti var. Adi CREATE INDEX qurulma müddətində yazmanı bloklayır; CREATE INDEX CONCURRENTLY bundan qaçır, amma tranzaksiya blokunda işləyə bilmir. Sabit default ilə əlavə edilən sütun müasir PostgreSQL-də ucuzdur, lakin expression və ya volatile default yenə də bütün cədvəli yenidən yazır. ALTER COLUMN TYPE adətən cədvəli yenidən yazır və bu müddətdə cədvəl yazma üçün bağlı qalır. NOT VALID olmadan əlavə edilən xarici açar bütün mövcud sətirləri dərhal yoxlayır; əvvəl NOT VALID ilə əlavə edib VALIDATE CONSTRAINT-i sonra işlətsəniz, iş iki mərhələyə bölünür. Ad dəyişikliyi və DROP COLUMN başqa cür risklidir: mərhələli yayım zamanı hələ işləyən köhnə tətbiq nüsxələri köhnə ada müraciət edir.

Yerli işləmə və CLI

Bütün təhlil brauzer tabında baş verir. Buferlər diskə yazılmır, heç nə serverə göndərilmir və layihənin məxfilik bölməsinə görə yerləşdirilmiş SQL-i qəbul edən API marşrutu, verilənlər bazası bağlantısı və telemetriya yoxdur. Eyni mühərrik CLI kimi də paketlənib: npx safe-not-safe check migration.sql əmri təhlilin nəticəsini terminalda çap edir.

Stek Vite ilə qurulan React tətbiq qabığıdır; parser əvvəlcədən işə salınmış Web Worker daxilində çalışır ki, WASM kompilyasiyası zamanı interfeys donmasın. İstehsal hədəfi Cloudflare Workers-dir və konfiqurasiyasında qəsdən D1, R2 və ya KV bağlantısı yoxdur. Kod GitHub-da, viggy28/safe-not-safe reposunda açıqdır.

SSiTech

SiTech — AI ilə gücləndirilmiş veb hazırlanması

Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.