PostgreSQL içinde JSONB yerine normalize tablolar
Çekirdek varlıklar constraint'ler ve foreign key'lerle normalize biçimde modellenir. JSONB, gerçekten şemasız veya nadiren sorgulanan çevresel veriler için hedefli olarak kullanılır.
Bu nedir? · Karar kaydı (ADR)
ADR formatında belgelenmiş bir mimari karar — bağlam, incelenen seçenekler, gerekçe ve sonuçlar. Genel bir rehber değil, somut bir karar. Genel bakışa git
- Durum
- Kabul edildi
- Kimlik
- ADR-003
- Gözden geçirme
- Sorgu desenlerinde veya veri hacminde önemli değişiklikler olduğunda yeniden değerlendirilmelidir.
Bağlam
PostgreSQL, JSONB ile esnek ve şemasız depolama sunar. Yapılandırılmış veriler için şu soru ortaya çıkar: normalize tablolar mı, JSONB sütunları mı?
Sorun
JSONB cazip biçimde esnektir, ancak yapıyı ve bütünlüğü veritabanından uygulama koduna taşır. Normalize tablolar yapıyı zorunlu kılar, ancak sık şema değişikliklerinde daha az esnektir.
Neleri değerlendirdik?
- A
Normalize tablolar
Yapı, constraint'ler ve indeksler veritabanında; net ilişkiler.
- B
JSONB sütunları
Esnek ve şemasız — bütünlük kodda yer alır.
- C
Karma
Çekirdek varlıklar için normalize, gerçek çevresel veriler için JSONB.
Neye karar verdik?
Çekirdek varlıklar constraint'ler ve foreign key'lerle normalize biçimde modellenir. JSONB, gerçekten şemasız veya nadiren sorgulanan çevresel veriler için hedefli olarak kullanılır.
Bu kararın gerekçesi
Veri bütünlüğü dağınık uygulama mantığına değil, veritabanına aittir. Normalize yapılar sorgulanabilir, indekslenebilir ve kendi kendini belgeler. JSONB, yapının gerçekten değişken olduğu yerlerde doğru tercihtir — modellemeyi atlamanın kestirme yolu olarak değil.
Sonuçlar
- Çekirdek varlıklardaki şema değişiklikleri migration gerektirir — bilinçli, sürümlenmiş ve izlenebilir.
- Sık sorgulanan JSONB alanları hedefli indekslere (GIN) ve belgelenmiş bir beklenen yapıya ihtiyaç duyar.
- Çekirdek ve çevresel veriler arasındaki sınır, gerekçelendirilen bir tasarım kararıdır.
Elenen alternatifler
- Varsayılan olarak JSONBBütünlüğü koda taşır, sorguları ve migration'ları zorlaştırır.
- Her ne pahasına olursa olsun normalizasyonVerilerin gerçekten şemasız olduğu yerlerde bile yapı dayatır.
İlgili konular.
Bu sayfayla bağlantılı rehberler, kararlar, hizmetler ve projeler.
Benzer bir kararın eşiğinde misiniz?
Bu kararları içgüdüyle vermiyoruz. Sisteminizdeki kararları doğrudan yönetimimizle konuşabilirsiniz.
