Modelleme: JSONB Normalleştirmeyi Ne Zaman Geride Bırakır
JSONB sütunu ile ayrı bir tablo arasında seçim yapın — esnek öznitelikler veya katı şemalar.
Modelleme: JSONB Normalleştirmeyi Ne Zaman Geride Bırakır, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Seçim
Saklayabileceğiniz her veri parçası için şu seçimi yapmanız gerekir: sütun mu, JSONB anahtarı mı? Yanıt, şema tasarımını, sorgu performansını ve bakım kolaylığını belirler.
Sütunlar Ne Zaman Avantajlıdır
Veriler şu özelliklere sahipse gerçek sütunları kullanınız:
- Biliniyor ve kararlı
- Dizinlerle sık sık sorgulanıyor
- CHECK / FK kısıtlamalarıyla doğrulanıyor
- Üzerinde raporlama yapılıyor veya birleştiriliyor
JSONB Ne Zaman Avantajlıdır
Şu durumlarda JSONB kullanınız:
- Yapı satırdan satıra değişiyorsa (kiracı tarafından tanımlanan alanlar, eklenti üst verileri)
- Şema hızla gelişiyorsa (geçişlerden kaçınmak için)
- Tüm belgenin okunması / yazılması normal durumsa
- Saydam yüklerin depolanması gerekiyorsa (web kancası gövdeleri)
Hibrit Kalıp
Her iki yaklaşımın en iyisi: kararlı çekirdek için yapılandırılmış sütunlar, değişken uzantı için JSONB:
CREATE TABLE events (
id BIGSERIAL PRIMARY KEY,
ts TIMESTAMPTZ NOT NULL,
event_type TEXT NOT NULL,
user_id BIGINT,
data JSONB NOT NULL DEFAULT '{}'::JSONB
);EAV Tuzağı
Klasik "varlık-öznitelik-değer" modeli — (anahtar, değer) satırlarından oluşan tek tablo — seyrek veriler için eskiden tek seçenekti. JSONB, EAV modelinin yerine tek bir belge sütunu koyar:
-- Old EAV:
CREATE TABLE user_attrs (
user_id BIGINT,
attr TEXT,
val TEXT
);
-- Modern:
ALTER TABLE users ADD COLUMN attrs JSONB NOT NULL DEFAULT '{}';
-- JSONB queries are faster and easier than the EAV joins.Geçiş Stratejisi
Yoğun kullanılan bir tabloya sütun eklemek → büyük bir tabloda 5 dakikalık kesinti. JSONB ile alan eklemek yalnızca uygulama kodunda değişiklik yapmayı gerektirir.
JSONB Üzerindeki Kısıtlamalar
Asgari yapıyı zorunlu kılmak için CHECK kısıtlamaları ekleyiniz:
ALTER TABLE events
ADD CONSTRAINT data_has_type CHECK (data ? 'type'),
ADD CONSTRAINT type_is_string CHECK (jsonb_typeof(data->'type') = 'string');Yoğun Kullanılan Alanları Öne Çıkarma
Bir JSONB alanı sık sorgulanmaya başlarsa onu gerçek bir sütuna taşıyınız. Bir UPDATE betiği + yeni dizin + yeni sütun, bu alanı hızlı hâle getirir.
JSONB Yama İşlemleri
Tek bir alanı güncellemek için:
UPDATE users
SET attrs = jsonb_set(attrs, '{plan}', '"pro"')
WHERE id = 1;Parayı JSONB İçinde Saklamayınız
Finansal değerler kesin NUMERIC türlerine ve kısıtlamalara ihtiyaç duyar. Bunları her zaman gerçek sütunlarda saklayınız.
JSONB Ne Zaman Sorun Oluşturur
Aynı JSONB anahtarını her sorguda çıkarıp türünü dönüştürdüğünüzü fark ederseniz bu, anahtarın bir sütun olması gerektiğinin işaretidir. Milyonlarca satırda (data->>'k')::INT ifadesinin birikimli maliyeti büyür.
Şema Belgeleme
JSONB sütunlarına veri yazmak kolay, ancak bunları belgelemek zordur. İş arkadaşlarınızın ne beklemesi gerektiğini bilmesi için harici bir şema (JSON Şeması, uygulama kodu) tutunuz.
Özet
JSONB güçlü bir araçtır; onu değişken bölümler için, gerçek sütunları ise kararlı çekirdek için kullanınız. Kullanım kalıpları ortaya çıktığında yoğun kullanılan alanları öne çıkarınız.
Hızlı Kontrol
Denetim olaylarını depoluyorsunuz. Olay türü her zaman mevcut; bazı olaylarda biçimi değişken olan bir "actors" dizisi bulunuyor. Bunu nasıl modellendirmelisiniz?
Sıkça Sorulan Sorular
“Modelleme: JSONB Normalleştirmeyi Ne Zaman Geride Bırakır” dersi ücretsiz mi?
Evet — “Modelleme: JSONB Normalleştirmeyi Ne Zaman Geride Bırakır” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“Modelleme: JSONB Normalleştirmeyi Ne Zaman Geride Bırakır” dersinde ne öğreneceğim?
JSONB sütunu ile ayrı bir tablo arasında seçim yapın — esnek öznitelikler veya katı şemalar. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Modelleme: JSONB Normalleştirmeyi Ne Zaman Geride Bırakır” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- JSONB ve JSON: Hangisi Ne Zaman Kullanılmalı
- Yol İşleçleri: -> ->> @>
- JSONB'yi GIN ile INDEX'leme
- Modelleme: JSONB Normalleştirmeyi Ne Zaman Geride Bırakır