Hangi durumlarda NoSQL kullanılmalı?

533388

Hectopat
Katılım
27 Mart 2022
Mesajlar
4.434
Makaleler
2
Çözümler
54
Örnek olarak bir e-ticaret projesinin backendinde hangisi daha uygun olur? Biraz araştırdım ve NoSQL'de SQL'deki gibi column mantığı yokmuş, key-Value mantığı varmış ve daha hızlıymış. Ek olarak artıları nelerdir?

@count yardımcı olabilir misiniz acaba?
 
Son düzenleyen: Moderatör:
Key-value mantığı klasik db olarak değil de en uygun cacheleme için kullanılıyor, dbden sorgu çekme işlemi öncesinde mesela rediste bu mevcut mu diye kontrol ediyorsunuz mevcutsa hızlı bir şekilde value'ya erişebiliyorsunuz, mevcut değilse dbye sorgu atıp rediste ilgili key'e atıyorsunuz, en azından benim çalıştığım yerlerde bu şekilde kullanıldı.

Klasik db diyeceğimiz dbler (örneğin mongodb) key-document mantığında çalışır. ör: bir employee tablosu için sql dblerde yapı oluşturulur, primary key, foreign keyler, diğer kolonların veri tipleri, nullable kolonlar vs. Nosql ise bu şekilde 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 dbde 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. Sqlde 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ı sqlde ı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.
 
Son düzenleme:
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.

Teşekkür ederim.
 
Data structured degildir, ACID compliance a gereksinim yoktur. ( ACID olan noSQL yapilar da var )
 

Yeni konular

Geri
Yukarı