PostgreSQL'de JSON Veri Tipi ve Sorgulanması

PostgreSQL, JSON verilerini doğal olarak depolamak ve sorgulamak için güçlü araçlar sunar. JSON ve JSONB olmak üzere iki veri tipi vardır; JSONB (binary JSON), indeksleme ve sorgu performansı açısından daha verimlidir.

JSON verileri depolamak basittir. Bir sütunu JSON tipi olarak tanımlayıp, yapılandırılmamış veriyi doğrudan saklayabilirsin.

1CREATE TABLE users (
2id SERIAL PRIMARY KEY,
3name VARCHAR(100),
4metadata JSONB
5);
6
7INSERT INTO users (name, metadata) VALUES
8('Ali', '{"age": 28, "city": "Istanbul", "skills": ["Python", "SQL"]}'::jsonb),
9('Zeynep', '{"age": 32, "city": "Ankara", "skills": ["Go", "Rust"]}'::jsonb);

JSON verilerini sorgulamak için `->` (JSON nesnesine erişim) ve `->>` (metin olarak erişim) operatörlerini kullanırsın. Örneğin, belirli bir şehirdeki kullanıcıları bulmak için:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1SELECT name, metadata->>'city' AS city
2FROM users
3WHERE metadata->>'city' = 'Istanbul';

Dizi içinde arama yapmak için `@>` operatörü kullan:

1SELECT name
2FROM users
3WHERE metadata @> '{"skills": ["Python"]}'::jsonb;

JSON_EXTRACT_PATH() ve JSONB_EACH() gibi fonksiyonlar da mevcuttur. JSONB'ye indeks eklemek sorguları hızlandırır:

1CREATE INDEX idx_metadata ON users USING GIN (metadata);

PostgreSQL'in JSON desteği, NoSQL'in esnekliğini ilişkisel veritabanının gücüyle birleştirir. API yanıtları, log verileri veya dinamik yapılandırmalar gibi yarı yapılandırılmış veriler için ideal bir seçenektir. JSONB kullanırken performans her zaman göz önünde tut; büyük JSON nesneleri sık sık sorgulanıyorsa normalleştirmeyi düşün.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz