İçeriğe atla
FerdiGidenby FerdiSoftBETA v2.4
Web Geliştirme

MySQL JSON Sütunları: Ne Zaman Kullanılır, Nasıl Sorgulanır?

Web Geliştirme üzerinde çalışırken MySQL JSON Sütunları: Ne Zaman Kullanılır, Nasıl Sorgulanır? konusunu doğru kavramak hem zaman kazandırır hem de ileride çıkabilecek sorunların önüne geçer. Aşağıda konunun özünü 5 başlık altında topladık.

Ferdi GidenFerdi Giden 2 dk okuma 5
MySQL JSON Sütunları: Ne Zaman Kullanılır, Nasıl Sorgulanır?
İçindekiler
  1. Konuya genel bakış
  2. Öne çıkan noktalar
  3. SQL ile uygulama
  4. Avantajları
  5. Özetle

Web Geliştirme üzerinde çalışırken MySQL JSON Sütunları: Ne Zaman Kullanılır, Nasıl Sorgulanır? konusunu doğru kavramak hem zaman kazandırır hem de ileride çıkabilecek sorunların önüne geçer. Aşağıda konunun özünü 5 başlık altında topladık.

Konuya genel bakış

Ürün özellikleri, kullanıcı tercihleri ya da dış servis yanıtları gibi yapısı kayıttan kayda değişen veriler için her alanı ayrı sütun yapmak pratik değildir. MySQL 5.7 ve MariaDB 10.2 ile gelen JSON desteği bu veriyi tek sütunda saklamayı ve içinden sorgulamayı sağlar; ama her veri için doğru tercih değildir.

Öne çıkan noktalar

  • Doğru kullanım alanı: Yapısı değişken ve nadiren filtrelenen veriler için uygundur; sık sorgulanan ve ilişki kurulan alanlar normal sütun olmalıdır.
  • Oluşturulmuş sütun ile indeks: JSON içindeki bir alanda arama yapacaksanız onu STORED oluşturulmuş sütuna çıkarıp indeksleyin.
  • Taşınabilir fonksiyonlar: MariaDB, MySQL'deki -> ve ->> işleçlerini desteklemez; JSON_EXTRACT ve JSON_UNQUOTE her ikisinde de çalışır.
  • Kısmi güncelleme: JSON_SET, JSON_REMOVE ve JSON_ARRAY_APPEND belgenin tamamını uygulamada yeniden kurmadan alan değiştirir.
  • Geçerli JSON: Veriyi uygulamada json_encode ile üretin; MySQL geçersiz JSON'u reddeder, MariaDB'de ise JSON türü JSON_VALID kısıtıyla aynı işi görür.

SQL ile uygulama

Teoriyi somutlaştırmak için kısa bir SQL örneğine bakalım:

CREATE TABLE urunler (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  ad VARCHAR(150) NOT NULL,
  ozellikler JSON NOT NULL,
  -- Sık aranan alan: oluşturulmuş sütun + indeks
  renk VARCHAR(30) AS (JSON_UNQUOTE(JSON_EXTRACT(ozellikler, '$.renk'))) STORED,
  INDEX ix_renk (renk)
);

INSERT INTO urunler (ad, ozellikler)
VALUES ('Kablosuz Mouse', '{"renk": "siyah", "dpi": 1600, "baglanti": ["bluetooth", "2.4ghz"]}');

SELECT ad, JSON_EXTRACT(ozellikler, '$.dpi') AS dpi
FROM urunler
WHERE renk = 'siyah' AND JSON_CONTAINS(ozellikler, '"bluetooth"', '$.baglanti');

UPDATE urunler SET ozellikler = JSON_SET(ozellikler, '$.dpi', 3200) WHERE id = 1;

Örneği kendi projenize uyarlarken değişken adlarını ve yapılandırma değerlerini ortamınıza göre değiştirmeyi unutmayın.

Bir sorguyu canlı veritabanında değiştirmeden önce EXPLAIN ile çalışma planını inceleyin.

Avantajları

Kısaca özetlemek gerekirse:

  • Şema değişikliği yapmadan yeni alan eklenebilir
  • Esnek veriler için ayrı anahtar-değer tablosuna gerek kalmaz
  • Oluşturulmuş sütunlarla esneklik ve hız birlikte elde edilir

Özetle

MySQL JSON Sütunları: Ne Zaman Kullanılır, Nasıl Sorgulanır?, küçük ama düzenli adımlarla ustalaşılan konulardan biri. Özellikle Doğru kullanım alanı ve Geçerli JSON başlıklarını uygulamaya geçirmek iyi bir başlangıç olur.

İlgili içerikler:

Daha fazla uygulamalı içerik için Akademi derslerine ve blog yazılarına göz atabilirsiniz.

Paylaş:
Ferdi Giden

Yazar

Ferdi Giden @admin
Sistem YöneticisiDoğrulanmış GeliştiriciBeta KullanıcıFerdiSoft KatılımcısıDoğrulanmış ProfilGüvenlik Bilinci

PHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.

Yorumlar 0

Yorum yapmak ve tartışmaya katılmak için giriş yapın. Rozetleriniz yorumlarınızda görünür.

Henüz yorum yok. İlk yorumu siz yazın!

İlgili yazılar

Tüm yazılar
Ücretsiz Teklif Al