SQL ve NoSQL veritabanları arasındaki farklar nelerdir? Hangisini ne zaman seçersiniz?
Cevap
| SQL (ilişkisel) | NoSQL | |
|---|---|---|
| Örnekler | PostgreSQL, MySQL | MongoDB, Redis, Cassandra, DynamoDB |
| Veri modeli | Tablolar, satırlar, ilişkiler | Doküman, key-value, wide-column, graph |
| Şema | Katı, önceden tanımlı | Esnek ya da şemasız |
| Sorgu | Güçlü JOIN, standart SQL | Genelde JOIN zayıf, erişim desenine göre modelleme |
| Tutarlılık | ACID transaction | Çoğu zaman eventual consistency (ayarlanabilir) |
| Ölçekleme | Genelde dikey; yatay için sharding zahmetli | Yatay ölçeklemeye göre tasarlanmış |
NoSQL türleri
- Doküman (MongoDB): iç içe JSON benzeri kayıtlar, değişken yapılı içerik.
- Key-value (Redis, DynamoDB): cache, session, sayaçlar.
- Wide-column (Cassandra): çok yüksek yazma hacmi, zaman serisi, log.
- Graph (Neo4j): ilişkinin kendisinin veri olduğu durumlar (sosyal ağ, öneri).
Seçim kriterleri
SQL tercih edin:
- Veri yapısı belli ve ilişkisel (sipariş, müşteri, fatura)
- Para, stok gibi güçlü tutarlılık gerektiren işlemler
- Önceden bilinmeyen, esnek raporlama sorguları
NoSQL tercih edin:
- Çok yüksek ölçekte basit erişim desenleri (ID ile oku/yaz)
- Şeması sık değişen veya kayıttan kayda farklılaşan veri
- Düşük gecikmeli cache/session katmanı
Pratikte çoğu sistem ikisini birlikte kullanır (polyglot persistence): ana veri PostgreSQL'de, cache Redis'te, arama Elasticsearch'te. Ayrıca PostgreSQL'in JSONB desteği birçok "esnek şema" ihtiyacını tek başına karşılar.
İlgili Veritabanı & SQL soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.