533388
Hectopat
- Katılım
- 27 Mart 2022
- Mesajlar
- 4.434
- Makaleler
- 2
- Çözümler
- 54
Key-Value mantığı klasik dB olarak değil de en uygun cacheleme için kullanılıyor, DB'den sorgu çekme işlemi öncesinde mesela Redist'e bu mevcut mu diye kontrol ediyorsunuz mevcutsa hızlı bir şekilde Value'ya erişebiliyorsunuz, mevcut değilse DB'ye sorgu atıp Redist'e ilgili Key'e atıyorsunuz, en azından benim çalıştığım yerlerde bu şekilde kullanıldı.
Klasik dB diyeceğimiz DB'ler (örneğin MongoDB) key-document mantığında çalışır. Ör: Bir employee tablosu için SQL DB'lerde yapı oluşturulur, primary key, foreign keyler, diğer kolonların veri tipleri, nullable kolonlar vs.
Nosql structured çalışmaz, yani vay efendim employee adına null gönderemezsin, vay efendim employee doğum tarihi bilgisine date değil integer bir değer gönderilmiş vb. durumlarda structured bir dB yapısı bunlara izin vermezken nosql DB'de bunun sorumluluğu sizin kod yeteneklerinize bağlıdır. Çünkü employee datası document olarak tutulur {_id:"bir UUID", name:"Ali", surname:"tuz". Vb...} şeklinde olabilir mesela, başka bir employeenin surname fieldı olmayabilir, başka bir employeenin elli tane daha (anaadı, babadı, tuttuğu takım, ilkokula başladığı gün.) Fieldı olabilir. SQL'de olmayan bu esneklik, potansiyel hataları da beraberinde getirse de sisteminizi düzgün kodlarsanız inanılmaz bir avantaj sağlar. Çok sayıda kayıt içeren bir SQL dbsine her yeni gereksinimde yeni kolonlar eklemek zulüm iken nosqlde bu bir sorun yaratmaz. Foreign keyleri bağlama sorumluluğu gene geliştiricidedir. Scalabilityde de avantajı vardır diye biliyorum, ben kendim uğraşmadım.
Banka sistemleri gibi, dinamik şemaya ihtiyaç duyulmayan nispeten eski sistemlerde migration maliyetinden de dolayı SQL'de ısrar edilir. Integrity konusunda SQL dblerin nosqle bir avantajı olabilir, ben bir sorun yaşamadım. Son birkaç yıldır da hiçbir yeni sistemi SQL tabanlı kurmadık, sadece legacy sistemlerimizde SQL devam ediyor, dinamik şemanın avantajı tek başına tercih sebebi.
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.