0Pricing
SQL Academy · Ders

JSONB ve JSON: Hangisi Ne Zaman Kullanılmalı

Doğru depolama seçimi için JSON (metin, boşlukları korur) ile JSONB (ikili, INDEX'lenebilir, yinelenen anahtarları tekilleştirilmiş) arasında seçim yapın.

JSONB ve JSON: Hangisi Ne Zaman Kullanılmalı, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 1. 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.

PostgreSQL'de İki JSON Türü

  • JSON — verdiğiniz metni tam olarak saklar
  • JSONB — ayrıştırılmış ikili biçim, tekilleştirilmiş anahtarlar ve dizinlenebilir yapı

JSON: Metin Depolama

JSON, boşlukları, anahtar sırasını ve yinelenen anahtarları korur. Her okumada yeniden ayrıştırılır. GIN dizinlemesi yoktur. Yeni kodlar için neredeyse hiçbir zaman doğru seçim değildir.

INSERT INTO docs (data) VALUES ('{"a": 1, "a": 2}'::JSON);
SELECT data->'a' FROM docs;     -- whatever the parser picks

JSONB: İkili ve Dizinlenebilir

JSONB:

  • Ayrıştırılmış olarak saklanır → okuma sırasında yeniden ayrıştırma gerekmez
  • Yinelenen anahtarlar birleştirilir (son değer geçerlidir)
  • Anahtar sırası korunmaz
  • GIN dizinlemesini destekler
  • Kapsamlı yol işleçlerini destekler

JSONB Örneği

Basit bir olaylar tablosu:

CREATE TABLE events (
  id BIGSERIAL PRIMARY KEY,
  ts TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  data JSONB NOT NULL
);

INSERT INTO events (data) VALUES
  ('{"type":"login","user_id":42,"ip":"1.2.3.4"}');

Yol İşleçleri

JSONB, kapsamlı işleçlere sahiptir (sonraki derste ele alınacaktır):

SELECT data->'user_id'   FROM events;       -- → JSONB
SELECT data->>'user_id'  FROM events;       -- → TEXT
SELECT data #>> '{user,name}' FROM events;  -- nested text path

İçerme

En kullanışlı JSONB işleci: @> (içerir).

SELECT * FROM events WHERE data @> '{"type":"login"}';

-- Combined with a GIN index, this is fast even on billions of rows.

JSONB Eşitliği

İki JSONB değeri, içerikleri eşleşiyorsa eşittir; anahtar sırası önemli değildir:

SELECT '{"a":1,"b":2}'::JSONB = '{"b":2,"a":1}'::JSONB;    -- TRUE

Türler Arasında Dönüştürme

Türleri serbestçe dönüştürünüz:

SELECT '{"a":1}'::JSONB->'a';                -- 1 (as JSONB)
SELECT ('{"a":1}'::JSONB)->>'a';             -- '1' (as TEXT)
SELECT ('{"a":1}'::JSONB)->'a'::INT;          -- 1 (as INT after extraction)

JSONB Ne Zaman Kullanılmamalı

Verilerin sabit bir yapısı varsa gerçek sütunları kullanınız:

  • Daha hızlı sorgular (her satırda belge ayrıştırma gerekmez)
  • Güçlü türler ve kısıtlamalar
  • Daha az depolama alanı
  • Daha iyi istatistikler

JSONB, yapı değişkense veya hızla gelişiyorsa öne çıkar.

Hibrit Modelleme

En iyi uygulama: kararlı alanlar için yapılandırılmış sütunlar, değişken ekler için JSONB:

CREATE TABLE events (
  id BIGSERIAL PRIMARY KEY,
  ts TIMESTAMPTZ NOT NULL,
  event_type TEXT NOT NULL,
  user_id BIGINT,
  extra JSONB NOT NULL DEFAULT '{}'::JSONB
);

Doğrulama

JSONB, geçerli her JSON'u saklar. Yapılandırılmış kısıtlamalar için CHECK kısıtlamalarını veya uygulama katmanında şema zorlamasını kullanınız:

ALTER TABLE events
  ADD CONSTRAINT data_has_type CHECK (data ? 'type');

Özet

Üretim ortamlarının neredeyse tamamında JSONB > JSON.

  • JSONB: ikili, dizinlenmiş ve hızlı yollar
  • JSON: yalnızca metin dönüşümü
  • Değişken yapılar için JSONB, sabit yapılar için gerçek sütunlar kullanınız

Hızlı Kontrol

İçeriğine göre sorgulayacağınız, kullanıcıların yüklediği JSON belgelerini saklamak için yeni bir tablo tasarlıyorsunuz. JSON mu, JSONB mi?

Sıkça Sorulan Sorular

“JSONB ve JSON: Hangisi Ne Zaman Kullanılmalı” dersi ücretsiz mi?

Evet — “JSONB ve JSON: Hangisi Ne Zaman Kullanılmalı” 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.

“JSONB ve JSON: Hangisi Ne Zaman Kullanılmalı” dersinde ne öğreneceğim?

Doğru depolama seçimi için JSON (metin, boşlukları korur) ile JSONB (ikili, INDEX'lenebilir, yinelenen anahtarları tekilleştirilmiş) arasında seçim yapın. 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 1. dersidir.

“JSONB ve JSON: Hangisi Ne Zaman Kullanılmalı” 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

  1. JSONB ve JSON: Hangisi Ne Zaman Kullanılmalı
  2. Yol İşleçleri: -> ->> @>
  3. JSONB'yi GIN ile INDEX'leme
  4. Modelleme: JSONB Normalleştirmeyi Ne Zaman Geride Bırakır
← SQL Academy Sayfasına Dön