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, değerlendirilen 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.
Mühendislik yolculuğunuza devam edin.
İlgili kavramlar, kararlar, uygulama kılavuzları ve bakış açıları — bir bağlantı listesi olarak değil, bütünlüklü bir yol olarak.
Benzer bir kararın eşiğinde misiniz?
Bu kararları içgüdüyle vermiyoruz. Yönetimimizle görüşün: teknik düzeyde, satış konuşması olmadan.
