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 JSONB5);67INSERT INTO users (name, metadata) VALUES8('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:
1SELECT name, metadata->>'city' AS city2FROM users3WHERE metadata->>'city' = 'Istanbul';Dizi içinde arama yapmak için `@>` operatörü kullan:
1SELECT name2FROM users3WHERE 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.
0 yorum