6 AY PEŞİN −28% · 1 YIL PEŞİN −50%Planları karşılaştır
PrivacyNodes
SÜRÜM MÜHENDİSLİĞİ

Bir veritabanı değişikliğini sürümler arasında uyumlu tutun

Uygulama geri alma ve veri geri almayı ayrı kararlar olarak ele alın. Eklemeli bir şema değişikliği, uyumlu koda dönüş yolunu koruyabilir. Aynı sürümde veriyi yeniden adlandırmak veya kaldırmak, uygulama doğrulanmadan önce bu yolu kapatabilir.

PrivacyNodes mühendislik notları · İncelendi · 3 dk okuma

Her okuyucuyu ve yazıcıyı haritalandırın

Temsili arındırılmış verilerle izole bir şema üzerinde çalışın. Geçerli ve sonraki uygulama sürümlerine, taşıma çerçeveniz hakkında bilgiye, incelenmiş bir yedekleme stratejisine ve uzun işlemlere görünürlüğe ihtiyacınız var. Çalışanları, zamanlanmış işleri, raporları ve eski uygulama örneklerini dahil edin. Bir API hızlı güncellenirken uzun süre çalışan bir işçi hâlâ eski sütuna yazıyor olabilir.

Örnek raporlama hizmetimiz bir dışa aktarma etiketini şurada saklar: label ve şunu ister: display_name. Bu bir tasarım örneğidir, evrensel çalıştırılabilir SQL değildir. Taşıma sözdizimini veya kilit ayarlarını seçmeden önce tam PostgreSQL sürümünüzü ve çerçevenizi doğrulayın.

Eski temsili devre dışı bırakmadan genişletin

Önce yeni nullable alanı tanıtın. Veriler eksikken tek bir işlemde her iki değeri yazan ve gerekli geri dönüşle okuyan bir uyumluluk sürümü dağıtın. Geriye doldurma sırasında bir müşteri bir kaydı düzenlediğinde ne olacağını tanımlayın. Bir yeniden deneme ikinci bir mantıksal dışa aktarma oluşturmamalıdır.

PostgreSQL ALTER TABLE işlemleri kilit alır; düzey alt komuta bağlıdır. Küçük bir değişiklik uzun bir işlemin arkasında bekleyebilir ve sonra diğer işleri engelleyebilir. Belirli işlemi inceleyin ve prova sırasında beklemeleri gözlemleyin; eklemeli, kilitsiz anlamına gelmez.

Teknik referans: PostgreSQL ALTER TABLE · PostgreSQL açık kilitleme.

Uyumluluk sınırını görünür kılın

Örnek sürüm uyumluluk matrisi
Şema ve yazıcılarOkuyucu davranışıKurtarma kararı
Yalnızca etiket varEski kod destekleniyorÖnce yeni alanı ekleyin
Her iki alan; yalnızca eskiye yazanlar kalırEtiketi yetkili olarak okuyunOkuyucuları henüz değiştirmeyin
Tüm yazıcılar çift yazar; doğrulanmış geriye doldurmaYeni alan yetkili hale gelebilirYalnızca uyumlu çift yazan koda geri dönün
Eski alan kaldırıldıHiçbir kod etikete başvurmamalıdırEski yapı uyumsuz

Eksik değerler için bir geri dönüş, boş olmayan ama eski bir yeni değeri algılayamaz. Okuyucuları değiştirmeden önce yalnızca eskiye yazanları devre dışı bırakın ve tutarlılığı doğrulayın. Okuyucu geçişinden sonra yalnızca eski koda geri dönmek sapmayı yeniden oluşturabilir. Bunun yerine uyumluluk sürümünü incelenmiş kurtarma yapısı olarak koruyun.

Sınırlı, yeniden başlatılabilir işlerle geriye doldurun

Daha yeni bir müşteri düzenlemesinin üzerine yazmadan kopyalanması gereken satırları bulun. Kararlı bir sıralama, eşzamanlılık açısından güvenli bir güncelleme koşulu ve iş yüküne göre seçilmiş gruplar kullanın. İlerlemeyi kalıcı hale getirin, böylece bir hata bilinen bir sınırda devam edebilir. Yazma hacmini, kilit beklemelerini, istek gecikmesini ve varsa replikasyonu izleyin.

Her uygulama için güvenli bir grup boyutu yoktur. Provada küçük bir grubu normal trafikle karşılaştırın, ardından bir duraklatma veya durdurma kuralı seçin. Bir grup başarısız olursa yeniden denemeden önce neyin taahhüt edildiğini inceleyin. Sınırsız bir yeniden deneme döngüsü, kurtarılabilir bir uyuşmazlığı sürekli veritabanı baskısına dönüştürebilir.

Yalnızca dolu satırları değil, anlambilimi de kontrol edin

Eksik değerleri, temsili etiketleri, yeni kayıtları ve mevcut dışa aktarmalara yapılan güncellemeleri doğrulayın. Boş olmayan satırları saymak doğru görünebilir, ancak değerler yanlış kaynaktan kopyalanmış olabilir. Uyumluluk yapısını kısmen doldurulmuş verilere karşı test edin ve dağıtımdan önce başlatılmış bir işçiyi çalıştırın.

Şema sürümünü, taşıma revizyonunu, tamamlama ölçütlerini ve uyumsuz kombinasyonları kaydedin. Herhangi birini kaldırmadan önce geri dönüş kullanımını ve tutarlılığı inceleyin. Kontroller başarısız olursa geriye doldurmayı veya terfiyi durdurun, kanıtları koruyun ve uyumlu bir yapı ya da incelenmiş ileri onarım seçin. Bir uygulama geri almanın taahhüt edilmiş veriyi yeniden oluşturduğunu iddia etmeyin.

Eski alanı başka bir incelenmiş sürümde kaldırın

Geriye doldurma ve gözlem dönemi ölçütlerinizi karşıladıktan sonra eski okumaları ve yazmaları kaldırın. Etkileşimli rotaların yanı sıra seyrek işleri de kontrol edin. Eski alanı bırakmak, kendi kurtarma kararıyla daha sonraki bir değişikliğe aittir; böylece bir sürüm sorunu sizi kod onarımını veri yeniden oluşturmayla birleştirmeye zorlamaz.

Devre dışı bırakmadan sonra kötü veri ortaya çıkarsa daha fazla hasarı durdurun ve kurtarma planını veya onaylanmış bir onarımı kullanın. Araçlar bir geri alma düğmesi sunduğu için yıkıcı bir aşağı taşıma uygulamayın. Matrisi şuna ekleyin: sürüm kaydıyla başlayın ve prova yapın: veri kurtarma üretimi değiştirmeden önce. Yararlı sonuç, sıfır kesinti garantisi değil, açık bir uyumluluk sınırıdır.

Resmî referanslar

Bu makale için belgeler incelendi. Örnekler, bir PrivacyNodes sunucusunda test edilmiş komutlar değil, planlama alıştırmalarıdır. Yüklü sürümünüz için belgeleri kontrol edin.