Prisma v8.0.0-rc.19 Sürüm Analizi
Yönetici Özeti ve Mimari Önem
Prisma v8.0.0-rc.19, ORM'nin veri kontratlarını, şema doğrulamasını ve çalışma zamanı yürütme boru hatlarını nasıl ele aldığında büyük bir mimari evrimi temsil eder. Varsayılan işleme mantığını kökten yeniden tanımlayarak—veritabanı düzeyindeki kısıtlamaları @onCreate ve @onUpdate öznitelikleri aracılığıyla istemci tarafından oluşturulan değerlerden ayırarak—bu sürüm, veritabanı şemaları ile uygulama katmanı düzenlemesi arasında daha net bir sınır oluşturur. Ek olarak, başlatma sırasında kontratlar üzerinde güçlü tür denetiminin zorunlu kılınması, varsayımları ortadan kaldırır ve çalışma zamanı temsillerinin temel veri katmanı yapılarına sıkı sıkıya bağlı olmasını sağlar.
Sistem tasarımı perspektifinden bakıldığında, her varsayılan değerin sütununun veri türü tarafından açıkça sahiplenilen bir biçimde saklanması, kod çözme rutinlerini önemli ölçüde kolaylaştırır ve ince, sessiz tür dönüştürme hatalarını önler. Tarih, saat, aralık ve bayt varsayılanları için yerleşik etiketlemeyi entegre eden Prisma, dil sınırları ve veritabanı sürücüleri arasında serileştirme yaparken yüksek sadakat sağlar. Bu yapısal değişiklikler nihayetinde sorgu planlama ve yürütme sırasındaki yükü azaltarak ara yazılım ve önbellekleme katmanlarının, aktif veritabanı bağlantılarına güvenmeden bireysel ORM etkinliklerini uyumlu, atomik birimler olarak incelemesine olanak tanır.
Temel Geliştirmeler ve Geliştirici Ergonomisi
Geliştirici ergonomisi, Prisma Şema Dilindeki (PSL) daha katı anlamsal doğrulamalar sayesinde v8.0.0-rc.19 sürümünde büyük bir ivme kazanmaktadır. Tür oluşturucu argümanları artık ayrıştırılmamış dizeler yerine doğrudan gerçek değerler olarak değerlendirilir (ör. VarChar("255") yerine VarChar(255) kullanımına geçiş), bu da yapılandırma sapmalarını ve çalışma zamanı ayrıştırma tutarsızlıklarını önler. Ek olarak, enum üyeleri artık temel kodeklerinin türü belirtilmiş değerleri olarak doğrudan yorumlanır; bu da 0.5 ve 0.50 gibi değerlerin sayısal türler içinde doğru bir şekilde yinelenenler olarak tanındığı hassas karşılaştırma mantığını etkinleştirir.
Raw(sql...) beyanının sunulmasıyla esneklik daha da artırılır; bu sayede geliştiriciler, Unsupported(...) alanları için Prisma 7 şema yüklemesinin geri yüklenmesinin yanı sıra herhangi bir veritabanı türünü sorunsuz bir şekilde hedefleyebilir. İstemci başlatma işlemi de iyileştirilmiştir: geliştiriciler ham veya satır içi genel yapılandırmaları doğrudan bağlayıcı fonksiyonlara geçirmek yerine, artık ön cephenin /static giriş noktasından contractFromJson<Contract>(contractJson) kullanarak kontratları açıkça başlatır. Bu, üstün tür güvenliği garantileri sağlar ve çalışma zamanı hata ayıklamasını daha şeffaf hale getirir.
Mimari Karşılaştırma Matrisi
| Özellik Boyutu | Önceki Temel Çizgi (v8.0.0-rc.18 ve öncesi) | Prisma v8.0.0-rc.19 | Mimari Etki |
|---|---|---|---|
| Sorgu Gecikmesi | Dinamik dizeyle ayrıştırılmış kontratlar ve çalışma zamanı aramaları aracılığıyla değerlendirilir. | Deterministik tür atama ile optimize edilmiş statik kontrat doğrulaması. | Veritabanı sorguları için azaltılmış yük ve öngörülebilir yürütme yolları. |
| Bellek Kaplaması | Çalışma zamanında çok türylü varsayılan dizelerin dinamik ayrıştırılması. | Özel türü belirtilmiş etiketler kullanan, birleşik sütun türüne ait depolama biçimleri. | Başlangıç sırasında daha düşük yığın ayırmaları ve en aza indirilmiş çöp toplayıcı baskısı. |
| API Yüzeyi | Satır içi contractJson parametreleri ve eski @default oluşturucu öznitelikleri. |
Açık contractFromJson aracı ve farklı @onCreate/@onUpdate kancaları. |
Katı tür sınırları uygular ve oluşturulan değerlerdeki belirsizliği ortadan kaldırır. |
Uyumsuz Değişiklikler ve Migrasyon Uyarıları
Prisma v8.0.0-rc.19, kod tabanınızda ve veritabanı örneklerinizde sistematik güncellemeler gerektiren birkaç uyumsuz değişiklik sunar. Daha önce @default(uuid()), @default(nanoid()) vb. ile tanımlanan istemci oluşturucular artık kesinlikle reddedilmekte ve @onCreate(...) olarak migre edilmelidir. Benzer şekilde, @noCheck niteleyicisi, yerleşik dizi boş değer atanabilirlik semantiği (ör. T?[]) lehine tamamen kullanımdan kaldırılmıştır; bu da saklanan kontratlarda ve migrasyon anlık görüntülerinde acil güncellemeler gerektirir.
Tür oluşturucular, enum beyanları ve zamansal veya ikili alanlar için varsayılan değerler artık katı tür kuralları uygular. Tür oluşturuculardaki tırnak içindeki sayılar ve tarihler veya bayt dizileri için etiketsiz dizeler (base64 yerine onaltılık sözdizimi kullanan bytea) derleme hatalarına neden olur. Geliştiriciler sağlanan yükseltme komut dosyalarını çalıştırmalı, kontratları yeniden yaymalı ve kriptografik imzaları güncellemek için bağlı tüm veritabanlarında prisma db sign çalıştırmalıdır.
Adım Adım Yükseltme Kılavuzu
Uygulamanızı güvenli bir şekilde Prisma v8.0.0-rc.19 sürümüne yükseltmek için şu pratik adımları izleyin:
Otomatik Yükseltme Komut Dosyalarını Çalıştırın: PSL dosyalarını otomatik olarak yeniden yazmak, istemci tarafı kontrat başlatmasını kaydırmak ve kullanım dışı bırakılan
@noChecksözdiziminiT?[]ile değiştirmek için havuzda sağlanan resmi uygulama veya eklenti yükseltme komut dosyalarını çalıştırın.İstemci Başlatma Kodunu Güncelleyin: Satır içi
contractJsonyapılandırmalarını yeni statik başlatma kalıbıyla değiştirin:
import { contractFromJson } from '@prisma/orm-postgres/static';
export const contract = contractFromJson<Contract>(contractJson);
export const db = postgres({ contract, url: process.env['DATABASE_URL']! });
- Veritabanlarını İmzalayın ve Doğrulayın: Şema değişikliklerini uyguladıktan ve kontratları yeniden yayınladıktan sonra, hash'leri güncellemek için veritabanı imzalama aracını çalıştırın:
prisma contract emit
prisma db sign
