SQL Server 2025 ile Gelen Yeni JSON Veri Tipi
Kurumsal SQL Server sistemlerinde, yapısal verinin dışına çıkıldığında işler genellikle karmaşıklaşır. JSON gibi yarı yapılandırılmış veri tipleri, uygulama katmanında büyük esneklik sağlasa da; veritabanı katmanında çoğu zaman yalnızca “uyarlama” ile çalıştırılabiliyordu. Bildiğiniz üzere, SQL Server 2016 sürümüyle birlikte JSON desteği sunulmaya başlandı; ancak bu destek, JSON verilerinin nvarchar veri tipi içinde düz metin olarak saklanmasıyla sınırlıydı.
Bu yaklaşım ise beraberinde önemli kısıtlamalar getiriyordu. Çünkü veritabanı motoru, JSON verisini özel bir veri türü olarak değil, yalnızca düz metin biçiminde işliyordu. Sonuç olarak, içerik üzerinde doğrudan indeksleme yapılamıyor, şemaya uygunluk kontrolü sağlanamıyor ve JSON içindeki alanlara doğrudan erişim veya güncelleme gerçekleştirilemiyordu. En basit sorgular bile, metin içinde doğru konumu bulmaya çalışan fonksiyonlar aracılığıyla yürütülmek zorundaydı. OPENJSON
, JSON_VALUE
, ISJSON
gibi işlevler bu noktada büyük kolaylık sağlasa da, aslında veritabanı motorunun JSON’u yerel düzeyde tanımamasının etrafından dolaşan çözümlerdi. Bu nedenle performans, yönetilebilirlik ve veri bütünlüğü açısından bakıldığında, bu yapı sınırlı, dikkat gerektiren ve uzun vadede geçici nitelikte bir çözümdü.
Microsoft, SQL Server 2025 ile bu tabloyu artık kökten değiştiriyor. Yeni sürümde JSON adında özel bir veri tipi mevcut. Bu veri tipi JSON içeriklerini binary formatta saklıyor (2 GB’a kadar), UTF-8 desteği sunuyor ve en önemlisi veritabanı motoru tarafından yerel olarak tanınıyor. Bu sayede, JSON içeriğine alan bazlı erişim yapılabiliyor, modify() fonksiyonu ile bireysel alanlar doğrudan güncellenebiliyor ve JSON alanlarına özel indeksleme ile sorgu performansı ciddi biçimde artırılabiliyor. Kısacası JSON, artık misafir değil, sistemin doğal bir parçası.

SQL Server 2025’in Public Preview sürümü, bu dönüşümü erkenden test etmek isteyen DBA’ler ve geliştiriciler için değerli fırsatlar sunuyor. Siz de bu önizleme sürümünü indirip test etmek isterseniz, Microsoft’un resmi SQL Server 2025 Public Preview sayfasını ziyaret edebilirsiniz.
Bu makalede, JSON veri tipinin sunduğu yenilikleri uygulamalı örneklerle ele alacak; yeni fonksiyonları, sorgu davranışlarını ve indeksleme yeteneklerini ekran çıktılarıyla birlikte inceleyeceğiz.
JSON Veri Tipiyle Tablo Oluşturma ve Veri Ekleme
Aşağıdaki örnekte, order_info
sütunu JSON NOT NULL
olarak tanımlanarak yalnızca geçerli JSON belgelerinin kabul edileceği bir yapı oluşturulmuştur. Bu yapı sayesinde JSON verisi hem sistem tarafından tanınır hem de şema geçerliliği kontrol edilir. Eski nvarchar
yaklaşımının aksine, artık JSON verisi sistemin gerçek bir parçası olarak işlenmektedir.

Yeni oluşturulan Orders
tablosuna geçerli JSON içerikleri doğrudan INSERT INTO
komutu ile eklenebilir. Aşağıdaki görselde görüldüğü gibi, her bir JSON belgesi kendi yapısal bütünlüğünü koruyarak order_info
sütununa yazılıyor. Ayrıca, SQL Server 2025 bu verileri binary formatta sakladığı için günün sonunda hem disk kullanımı optimize edilir hem de sorgulama işlemleri daha hızlı çalışır.

Ayrıca dikkat edilmesi gereken bir diğer konu, veritabanı motorunun artık JSON geçerliliğini de kontrol ediyor olmasıdır. Eğer JSON yapısal olarak hatalıysa, sorgu çalıştırılamaz ve hata alınır. Bu, sistem düzeyinde şema bütünlüğü sağlar.
modify() Fonksiyonu ile Alan Bazlı Değişiklik
SQL Server 2025 ile tanıtılan JSON
veri tipi, yalnızca veri erişimini değil, doğrudan güncellemeyi de desteklemektedir. Bu veri tipiyle birlikte gelen modify()
metodu sayesinde, JSON içindeki belirli alanlara noktasal erişim sağlanarak doğrudan güncelleme yapılabilir. Bu yaklaşım, önceki sürümlerde nvarchar
üzerinde yapılan işlemlerde karşılaşılan metin ayrıştırma, yeniden oluşturma ve hata risklerini büyük ölçüde ortadan kaldırır.
Aşağıdaki örnekte, order_info
kolonunda yer alan JSON verisi içerisindeki Quantity
alanı sorgulanmaktadır. Bu işlemde, JSON_VALUE
fonksiyonu kullanılarak her satırdaki Quantity
değeri ayrıştırılır ve ilişkisel tablolarda olduğu gibi sütun biçiminde dışarıya aktarılır.

Bir önceki adımda sorguladığımız Quantity
alanı, artık modify()
metodu kullanılarak doğrudan güncellenebilir. SQL Server 2025 ile gelen JSON
veri tipinin sağladığı bu yenilik sayesinde, geleneksel metin bazlı işlemler yerine alan düzeyinde ve yapısal güncellemeler artık yapılabilmektedir. Aşağıdaki UPDATE
sorgusu, order_id
değeri 1 olan kayıtta Quantity
alanını 1’den 2’ye güncellemektedir.

İşlem tamamlandıktan sonra aynı SELECT
sorgusu yeniden çalıştırıldığında, order_id = 1
olan satırda Quantity
değerinin 2 olarak güncellendiği görülür. Bu işlem sırasında ne JSON belgesinin tamamı değiştirildi ne de metin düzeyinde bir manipülasyon yapıldı; sadece hedef alana doğrudan müdahale edilerek güncelleme sağlandı.
JSON_CONTAINS() Fonksiyonu ile JSON İçeriğinde Değer Arama
SQL Server 2025 ile birlikte gelen bir diğer dikkat çekici yenilik ise JSON_CONTAINS()
fonksiyonudur. Bu fonksiyon sayesinde, JSON veri yapısı içinde belirli bir değerin belirli bir yol üzerinde bulunup bulunmadığını sorgulamak artık çok daha kolay ve performanslı hâle gelmiştir.
Önceki sürümlerde, bir JSON alanı içinde değer aramak için genellikle JSON_VALUE()
fonksiyonu ile birlikte WHERE
koşulları yazmak gerekirdi. Ancak bu yöntem, özellikle büyük veri kümelerinde performans açısından yeterli olmayabiliyordu. SQL Server 2025’te ise JSON_CONTAINS()
, hem daha sade bir sözdizimi sunar hem de JSON indeksleriyle birlikte kullanıldığında ciddi sorgu hızlanmaları sağlar.
Aşağıdaki örnekte, order_info
sütununda yer alan JSON belgeleri içerisinden, Quantity
alanı 2 olan satırlar filtrelenmektedir.

Burada JSON_CONTAINS()
fonksiyonu üç parametre şeklinde çalışmaktadır. İlk parametre olarak sorgulanacak JSON verisi (order_info
), ikinci parametre olarak aranacak değer ('2'
), üçüncü parametre olarak ise kontrol edilecek JSON yolu ('$.Items[*].Qty'
) belirtilir. Bu yapı sayesinde, JSON içeriğinde belirli bir değerin belirli bir alanda bulunup bulunmadığı kolayca sorgulanabilir.
JSON_CONTAINS()
fonksiyonu, yalnızca basit değer kontrolleriyle sınırlı kalmaz; aynı zamanda JSON belgeleri içindeki diziler veya nesneler içerisinde de arama yapabilme yeteneğine sahiptir. Bu fonksiyon, yukarıda belirttiğim üzere özellikle JSON INDEX
ile birlikte kullanıldığında, geleneksel metin tarama yerine doğrudan indeks üzerinden çalıştığı için sorgu performansında ciddi bir artış sağlar. Bu yönüyle, JSON_VALUE
ile yapılan filtreleme işlemlerine göre çok daha verimli ve ölçeklenebilir bir çözüm sunmaktadır. Ayrıca JSON_CONTAINS()
yalnızca yeni JSON
veri tipiyle değil, nvarchar
türünde saklanan geçerli JSON verilerle de çalışabilir; ancak maksimum performans ve indeks desteği elde etmek için JSON
veri tipiyle birlikte kullanılması önerilmektedir.
SQL Server 2025 ile JSON Index Kullanımı
SQL Server 2025 ile birlikte gelen en önemli performans yeniliklerinden biri de JSON INDEX
desteğidir. Önceki sürümlerde nvarchar
sütunlar içinde saklanan JSON verileri üzerinde indeksleme yapmak oldukça sınırlıydı ve genellikle computed column
+ persisted
+ index
gibi dolaylı yöntemler gerekiyordu. Artık bu tür yapay çözümler yerine doğrudan JSON alanları üzerinde indeks tanımlamak mümkün.
CREATE JSON INDEX
ifadesiyle, bir json
veri tipine sahip sütunun içindeki belirli yollar indekslenebilir. Bu sayede JSON_VALUE
, JSON_CONTAINS
gibi fonksiyonlarla yapılan sorgular, veritabanı motoru tarafından indeks üzerinden yürütülerek ciddi performans kazancı sağlayacaktır.

JSON INDEX
, tahmin edebileceğiniz gibi yalnızca json
veri tipine sahip sütunlar üzerinde tanımlanabilir. Bu nedenle, eski sürümlerde kullanılan nvarchar
tabanlı JSON yapılarında bu yeni indeksleme yöntemi kullanılamaz. Ayrıca, indeksin uygulanacağı tablonun mutlaka bir primary key içermesi gerekir; aksi takdirde CREATE JSON INDEX
komutu hata verir. Bir de tabii SQL Server 2025'in bu özelliği hâlâ geliştirilmekte olan bir yenilik olduğu için, indeksler yalnızca offline modda oluşturulabilmektedir. Bu da indeks oluşturma süresince ilgili tabloya erişimin geçici olarak engellenebileceği anlamına gelir. Şu an için yalnızca JSON_VALUE
ve JSON_CONTAINS
gibi belirli fonksiyonlarla uyumlu çalışmaktadır; dolayısıyla tüm JSON işlemleri bu indeks tarafından hızlandırılamaz.

JSON INDEX
desteği sayesinde, özellikle büyük veri hacmine sahip sistemlerde JSON alanlarına yönelik sorgular çok daha hızlı ve verimli hâle gelir. Daha önce metin taramasına dayalı olarak çalışan WHERE
koşulları, artık doğrudan index seek ile yürütülebilir. Bu durum, işlem süresini azaltırken sistem kaynaklarını da daha verimli kullanmanızı sağlar. Ayrıca, önceki sürümlerde ihtiyaç duyulan computed column
ve persisted
yapılarına gerek kalmadığı için, hem kod sadeleşir hem de bakım kolaylaşır. JSON INDEX
, yarı yapılandırılmış verilerin ilişkisel veri tabanlarında gerçek anlamda optimize şekilde kullanılmasının önünü açacak gibi görünüyor.
En nihayetinde SQL Server 2025 ile gelen yerel JSON veri tipi ve buna eşlik eden fonksiyonel yenilikler, yarı yapılandırılmış verilerin veritabanı düzeyinde yönetimini artık çok daha doğal, güvenli ve performanslı bir hâle getiriyor. modify()
, JSON_CONTAINS()
ve JSON INDEX
gibi yetenekler, yalnızca geliştiricilere daha temiz kod yazma imkânı sunmakla kalmıyor; aynı zamanda sorgu performansını da gözle görülür biçimde iyileştiriyor. Kurumsal sistemlerde JSON’un bir “geçici çözüm” değil, doğrudan desteklenen bir veri modeli olarak yer alması; veri mimarisi açısından önemli bir dönüm noktası anlamına geliyor. Önümüzdeki dönemde SQL Server’ın JSON desteği daha da olgunlaştıkça, hem veri esnekliği hem de analitik kabiliyetleri açısından çok daha güçlü senaryolar mümkün olacak gibi görünüyor.