Belge veritabanı: verinin belge olarak saklandığı NoSQL modeli
Sözlük

Belge veritabanı: verinin belge olarak saklandığı NoSQL modeli

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 3 dk okuma

Belge veritabanı nedir, JSON benzeri belgeleri nasıl saklar ve sorgular? İlişkisel veritabanından farkı, örnek belge yapısı ve kullanım alanları.

Belge veritabanı nedir?

Belge veritabanı (document database), veriyi satır ve sütunlardan oluşan tablolar yerine, kendi içinde yapılandırılmış belgeler olarak saklayan bir NoSQL veritabanı türüdür. Belge genellikle JSON ya da ona benzer ikili bir biçimdedir; alan adları ve değerlerden, iç içe nesnelerden ve dizilerden oluşur. Belgeler koleksiyonlarda gruplanır ve her belgenin kendine ait bir kimliği vardır.

Temel fikir şudur: birlikte okunan veri birlikte saklanmalıdır. Bir sipariş, müşterisi, kalemleri ve teslimat adresiyle tek bir belgede durabilir; uygulama tek okumayla her şeyi alır. MongoDB, Couchbase ve Amazon DynamoDB (belge modelini de destekler) bu ailenin bilinen örnekleridir.

Nasıl çalışır?

Belge veritabanında şema katı biçimde önceden dayatılmaz. Aynı koleksiyondaki iki belgenin alanları farklı olabilir; bir üründe renk alanı varsa diğerinde ağırlık alanı bulunabilir. Bu esneklik, hızla değişen uygulamalarda geliştirme sürecini kolaylaştırır. Yine de iyi tasarımda alanlar tutarlı adlandırılır, gerekirse veritabanı düzeyinde doğrulama kuralları tanımlanır.

Sorgu dili belgenin yapısına göre çalışır. Bir alana göre filtreleme, iç içe alanlara inme, dizi içinde arama ve gruplayarak özetleme (aggregation) gibi işlemler desteklenir. Performans için sık sorgulanan alanlara indeks tanımlanır. Büyük hacimde ise veri, parçalama (sharding) ile birden çok sunucuya dağıtılır ve kopyalama (replikasyon) ile yedeklenir.

Küçük bir örnek

Bir kitap mağazasında kitap kaydı şöyle bir belge olabilir:

{ "baslik": "Küçük Prens", "yazar": { "ad": "Antoine de Saint-Exupéry" }, "etiketler": ["roman", "çocuk"], "yorumlar": [ { "kullanici": "ayse", "puan": "çok iyi" } ] }

İlişkisel modelde yazar, etiket ve yorum ayrı tablolara bölünür ve bir kitabı göstermek için birleştirme (join) gerekir. Belge modelinde ise kitap sayfasını oluşturmak için tek belge okunur. Karşılığında yazar bilgisi birçok kitapta tekrar edilir; yazar adı değiştiğinde güncelleme birden çok belgeye uygulanmalıdır. Bu denge, modelleme kararının merkezindedir: gömmek (embed) mi, başka belgeye referans vermek mi.

İlişkisel veritabanından farkı

İlişkisel veritabanı veriyi normalleştirir, ilişkileri yabancı anahtarlarla kurar ve çok tablolu işlemlerde güçlüdür. Belge veritabanı ise erişim desenine göre modelleme yapar: uygulama hangi veriyi birlikte istiyorsa o birlikte saklanır.

Ölçüt olarak şunlar öne çıkar:

  • Şema: ilişkiselde sabit, belge modelinde esnek
  • İlişkiler: ilişkiselde join ile, belgede çoğunlukla gömme ya da referansla
  • Karmaşık çok tablolu raporlama: ilişkiselde doğal, belgede ek tasarım gerektirir
  • Yatay ölçekleme: belge sistemlerinde genellikle yerleşik bir özelliktir

Günümüzde birçok belge veritabanı çok belgeli işlemleri de destekliyor; yine de tutarlılık gereksinimi yüksek, ilişkileri yoğun bir uygulama için ilişkisel model çoğu zaman daha doğal bir seçimdir.

Nerede kullanılır?

Belge veritabanları içerik yönetimi, ürün kataloğu, kullanıcı profili, mobil uygulama arka ucu, nesnelerin interneti verisi ve olay kayıtları gibi alanlarda yaygındır. Ortak özellikleri, kayıtların farklı alanlar taşıyabilmesi ve uygulamanın çoğunlukla bir kaydı bütün olarak okumasıdır.

Kullanımı yanlış yapılan örnek de bellidir: birçok varlığın birbirine karmaşık ilişkilerle bağlandığı, sık çapraz raporlama gerektiren bir muhasebe sistemini hiçbir tasarım olmadan belge modeline taşımak sorun yaratır.

Öğrenme yolu ve Mindset bağlamı

Belge modelini öğrenmenin sağlam yolu, önce belge ve koleksiyon kavramlarını, sonra modelleme desenlerini (gömme ve referans), indeks ve sorgu performansını, en sonda da kopyalama ve parçalamayı çalışmaktır.

Belge modelini farklı derinliklerde işleyen birkaç program katalogda yer alıyor. NoSQL Veritabanı Sistemleri ve Uygulamaları genel bir giriş ve karşılaştırma sunar; NoSQL Veritabanları (MongoDB) ile Uygulama Geliştirme belge modeli, modelleme desenleri ve aggregation pipeline üzerinde durur; MongoDB İşletimi ve Sharding Stratejileri işletme tarafına, Amazon DynamoDB ile NoSQL Veri Modelleme ise erişim deseni analizine ve tek tablo tasarımına odaklanır. Uygulama geliştirenler ilk programdan, veritabanını işleten ekipler ise işletme programından başlayabilir.

İlgili Mindset programı

NoSQL Veritabanı Sistemleri ve Uygulamaları

Sık sorulanlar

Sık sorulan sorular

Belge veritabanı ile anahtar-değer veritabanı aynı mıdır?

Değildir. Anahtar-değer deposunda değer çoğunlukla opak bir veridir ve yalnızca anahtarla erişilir. Belge veritabanında ise değerin iç yapısı veritabanı tarafından bilinir; belgenin içindeki alanlara göre filtreleme, indeksleme ve güncelleme yapılabilir. Bu fark, belge modelini daha zengin sorgular için uygun kılar.

Belge veritabanı şemasız mıdır?

Tam olarak değil. Veritabanı şemayı dayatmaz, ama uygulamanın belgeyi okurken beklediği bir yapı vardır; buna örtük şema denir. Şemanın sorumluluğu veritabanından uygulama koduna kayar. Üretimde alan tutarlılığını korumak için doğrulama kuralları ve sürümlü veri geçişleri kullanmak iyi uygulamadır.

Hangi durumda ilişkisel veritabanı yerine belge veritabanı seçilir?

Kayıtların farklı alanlar taşıdığı, şemanın sık değiştiği ve uygulamanın bir kaydı çoğunlukla bütün olarak okuduğu durumlarda belge modeli doğaldır. Çok tablolu karmaşık ilişkiler, sıkı bütünlük kuralları ve yoğun raporlama ağırlıktaysa ilişkisel model daha uygun kalır. Birçok sistem ikisini birlikte kullanır.

Belge veritabanında işlem (transaction) desteği var mı?

Ürüne göre değişir. Birçok modern belge veritabanı tek belge düzeyinde atomik güncellemeyi temel olarak sunar ve çok belgeli işlemleri de destekler; ancak çok belgeli işlemler performans maliyeti taşıyabilir. Kullanacağınız ürünün güncel dokümantasyonunda tutarlılık ve işlem davranışını kontrol etmek gerekir.

Belge Veritabanı (Document Database) Nedir?