Skip to content

Temel Veritabanı Kavramları

Veritabanı Mimarisi Diyagramı

Temel Veritabanı Konseptleri

SQL Veritabanları (Spring Boot ile)

Spring Data JPA

  • Hibernate ORM üzerinden entity eşleme
  • @Entity/@Table anotasyonları ile şema eşleme

Repository Deseni

  • JpaRepository<Entity, ID> ile CRUD işlemleri
  • Özel sorgu metotları (@Query anotasyonu)

Transaction Yönetimi

  • @Transactional anotasyonu ile deklaratif transaction yönetimi
  • İzolasyon seviyeleri
  • Yayılım davranışları

Bağlantı Havuzu (Connection Pooling)

  • HikariCP ile üretime hazır bağlantı havuzu
  • Bağlantı sızıntısı tespiti

Veritabanı Göçleri (Migration)

  • Flyway/Liquibase ile şema versiyonlama
  • Başlangıç göçleri
  • Tekrarlanabilir scriptler

PostgreSQL

  • JSON/JSONB desteği
  • Gelişmiş indeksleme
  • Tam metin arama
  • Yatay ölçekleme ile CitusDB

MySQL

  • Master-slave replikasyonu
  • InnoDB depolama motoru
  • Bölümlendirme stratejileri

NoSQL Veritabanları (Spring Boot ile)

MongoDB

  • Spring Data MongoDB ile doküman tabanlı depolama
  • @Document anotasyonu
  • Tepkisel (reactive) destek

Redis

  • Spring Data Redis ile önbellekleme katmanı
  • RedisTemplate/StringRedisTemplate
  • Yayın/abone mesajlaşma

Elasticsearch

  • Spring Data Elasticsearch ile tam metin arama
  • Toplu sorgular (aggregations)
  • Gerçek zamanlı analizler

Cassandra

  • Spring Data Cassandra ile geniş sütunlu veri deposu
  • Sonunda tutarlılık (eventual consistency)
  • Yüksek erişilebilirlik

Veritabanı Tasarım Desenleri

Alan Odaklı Tasarım (Domain-Driven Design)

Olay Kaynaklı Mimari (Event Sourcing)

CQRS

Servis Başına Veritabanı

  • Mikroservis deseni
  • Veri sahipliği
  • Dağıtık transaction zorlukları

İndeksleme (Indexleme) - Spring Boot Perspektifi

JPA İndeks Anotasyonları

  • @Index anotasyonu ile entity seviyesinde indeks tanımları
  • @Table(indexes = {...}) ile bileşik indeksler

Veritabanına Özgü İndeksler

  • PostgreSQL JSONB indeksleri
  • MySQL tam metin indeksleri
  • Coğrafi veriler için uzamsal indeksler

Performans İzleme

  • Spring Boot Actuator ile yavaş sorgu tespiti
  • Hibernate istatistikleri
  • Bağlantı havuzu metrikleri

İndeks Stratejisi

  • Kardinalite analizi
  • Kapsayıcı indeksler ile sorgu performansı
  • Kısmi indeksler ile depolama optimizasyonu

B-tree Uygulaması

Normalizasyon ve Denormalizasyon - Spring Boot Bağlamı

Normalizasyon (3NF/BCNF)

  • JPA @OneToMany/@ManyToOne ilişkileri ile yabancı anahtar kısıtları
  • @JoinColumn ile ilişki eşleme

Denormalizasyon Stratejileri

  • @Formula anotasyonu ile hesaplanmış alanlar
  • @SecondaryTable ile tablo bölme
  • Okuma için optimize görünümler

Olay Tabanlı Denormalizasyon

  • Alan olayları ile türetilmiş veri senkronizasyonu
  • Sonunda tutarlılık desenleri

Materyalize Görünümler

  • Veritabanı seviyesinde önceden hesaplanmış toplulaştırmalar
  • Spring zamanlanmış görevler ile görünüm güncelleme

Tercihler

  • Yazma karmaşıklığı vs okuma performansı
  • Depolama maliyeti vs sorgu hızı
  • Tutarlılık vs erişilebilirlik

Performans Optimizasyonu

İndeksleme Stratejileri

  • B-tree indeksleri: Varsayılan indeks türü, eşitlik ve aralık sorguları için iyi
  • Kısmi indeksler: Sadece belirli satırları indeksler, indeks boyutunu azaltır
  • Bileşik indeksler: Birden fazla sütun, sıralama önemli
  • Kapsayıcı indeksler: Tüm gerekli sütunları içerir, tabloya erişimi önler

Sorgu Optimizasyonu

  • EXPLAIN PLAN analizi
  • N+1 sorgu problemi (@EntityGraph, @BatchSize)

Önbellekleme Katmanları

  • İkinci seviye önbellek (Hibernate)
  • Sorgu sonucu önbelleği
  • Dağıtık önbellek (Redis)

Okuma Kopyaları (Read Replicas)

  • Master-slave replikasyonu
  • Okuma-yazma ayrımı
  • Sonunda tutarlılık yönetimi

Dağıtık Veritabanı Desenleri

Parçalama Stratejileri (Sharding)

Replikasyon

CAP Teoremi

Veritabanı Federasyonu

  • Veritabanları arası sorgular
  • Veri sanallaştırma
  • Servis odaklı veri erişimi

Çoklu Veritabanı Kullanımı (Polyglot Persistence)

  • Doğru iş için doğru araç
  • Hibrit depolama stratejileri
  • Veri senkronizasyonu zorlukları

SQL ve NoSQL Karşılaştırması

ÖzellikSQLNoSQL
ŞemaSabitEsnek
ACIDDeğişken
ÖlçeklenebilirlikDikeyYatay
Karmaşık SorgularSınırlı
TutarlılıkGüçlüSonunda
OlgunlukYüksekDeğişken

Veritabanı Seçim Kriterleri

SQL Veritabanı Kullan

  • Karmaşık ilişkiler
  • ACID uyumluluğu gerekli
  • Karmaşık sorgular ve analizler
  • Güçlü tutarlılık ihtiyacı
  • Olgun ekosistem gereksinimi

NoSQL Veritabanı Kullan

  • Yatay ölçeklenebilirlik ihtiyacı
  • Esnek şema gereksinimi
  • Yüksek erişilebilirlik önceliği
  • Basit sorgu desenleri
  • Hızlı geliştirme döngüleri

İzleme ve Performans

Veritabanı Metrikleri

  • Sorgu yürütme süresi
  • Bağlantı havuzu kullanımı
  • İndeks kullanımı
  • Kilitlenme (lock contention)
  • Replikasyon gecikmesi

Optimizasyon Teknikleri

  • Sorgu performans ayarı
  • İndeks optimizasyonu
  • Bağlantı havuzu ayarı
  • Bölümlendirme stratejileri
  • Önbellekleme uygulamaları

Eren Demir tarafından oluşturulmuştur.