Bölüm 11 / 33
Veritabanları ve Veri Modelleme
İlişkisel ve NoSQL sistemler, tablo tasarımı, sorgular, transaction, index ve performans kavramları.
4 canlı örnek — seçerek incele
İlgili kavramlar: Table, Foreign Key, CRUD
Basit veri modeli
Uygulama verisini kalıcı, sorgulanabilir ve yönetilebilir biçimde saklayan sistem.
- DBMST
Veritabanı oluşturma, sorgulama, güvenlik ve yedekleme işlemlerini yöneten yazılım.
Veriyi satır ve sütunlardan oluşan ilişkili tablolarda saklayan veritabanı.
- SQLT
İlişkisel veritabanlarında veri tanımlama, sorgulama ve değiştirme dili.
Gelişmiş veri türleri, transaction ve genişletilebilirlik sunan açık kaynak ilişkisel veritabanı.
Web uygulamalarında yaygın kullanılan açık kaynak ilişkisel veritabanı.
MySQL uyumlu açık kaynak ilişkisel veritabanı.
Tek dosyada ve sunucusuz çalışan gömülü ilişkisel veritabanı.
İlişkisel tablo modelinden farklı veri modelleri kullanan veritabanı ailesi.
Veriyi JSON benzeri dokümanlar olarak saklayan NoSQL türü.
BSON dokümanları ve collection yapısını kullanan NoSQL veritabanı.
Veriyi benzersiz anahtar ve karşılık gelen değer olarak saklayan sistem.
Bellek ağırlıklı çalışan, cache, queue ve geçici veri için kullanılan veri deposu.
Veriyi geniş ve dağıtık sütun ailelerinde saklayan NoSQL modeli.
Varlık ve ilişkileri node-edge yapısıyla saklayan veritabanı.
Tablo, sütun, tür, ilişki ve kısıtların tanımı.
Bir veritabanındaki nesnelerin mantıksal yapısı.
Aynı tür kayıtları satır ve sütunlar hâlinde saklayan yapı.
Tablodaki tek bir varlık veya olay kaydı.
Kayıtların belirli özelliğini ve veri türünü tanımlayan alan.
Sütunun integer, text, date veya boolean gibi saklayacağı değer türü.
Tam sayı veri türü.
Daha geniş aralıkta tam sayı veri türü.
Para gibi kesin ondalık hesaplar için kullanılan veri türü.
Yaklaşık ondalık sayı saklayan kayan nokta türü.
Belirli üst sınıra sahip değişken uzunluklu metin.
- TextT
Uzun veya sınırı uygulamaya bırakılmış metin alanı.
Doğru veya yanlış değer tutan tür.
- DateT
Takvim tarihini saat bilgisi olmadan saklar.
- TimeT
Günün saat bilgisini tarih olmadan saklar.
Tarih ve saat bilgisini birlikte saklar.
Tarih-saat değerinin hangi saat dilimine göre yorumlandığını belirleyen bilgi.
- UUIDO
Dağıtık ortamlarda üretilebilen 128 bit benzersiz kimlik.
Yapılandırılmış JSON verisini bir ilişkisel tablo sütununda saklar.
Birden fazla aynı tür değeri tek sütunda saklayan veritabanı türü.
- EnumO
Sütun değerini önceden tanımlanmış seçeneklerle sınırlar.
Tablodaki her satırı benzersiz tanımlayan sütun veya sütun grubu.
Bir tablodaki alanı başka tablonun primary key kaydına bağlayan kısıt.
Bir sütun veya sütun kombinasyonunda tekrar eden değeri engeller.
Sütunun boş değer kabul etmemesini sağlar.
Yeni kayıt eklenirken alan verilmezse kullanılacak varsayılan değer.
Sütun veya kayıt değerinin belirli koşula uymasını zorunlu kılar.
Veri bütünlüğünü korumak için veritabanının uyguladığı kural.
Yeni kayıtlar için artan sayısal kimliği otomatik üretir.
Sıralı benzersiz sayı üreten veritabanı nesnesi.
Veritabanı standardına uygun otomatik kimlik sütunu.
Birden fazla sütunun birlikte benzersiz kimlik oluşturması.
T.C. kimlik veya ürün kodu gibi iş verisinden gelen anahtar.
İş anlamı taşımayan yapay id veya UUID anahtarı.
Tablolar arasındaki veri bağlantısı.
Bir kaydın diğer tabloda en fazla bir kayıtla ilişkilendiği yapı.
Bir kaydın diğer tabloda çok sayıda kayıtla ilişkilendiği yapı.
İki tablodaki kayıtların karşılıklı çok sayıda ilişki kurabildiği yapı.
Many-to-many ilişkiyi iki foreign key ile temsil eden ara tablo.
Bir tablonun foreign key ile yine kendi tablosuna bağlanması.
Kategori veya organizasyon gibi hiyerarşik kayıt ilişkisi.
Hiyerarşiyi her kayıtta parent_id tutarak modelleme.
Tüm ata-torun ilişkilerini ayrı tabloda saklayan hiyerarşi modeli.
Tekrarı ve güncelleme sorunlarını azaltmak için veriyi ilişkili tablolara ayırma.
Her hücrede atomik değer bulunması ve tekrar eden sütun gruplarının olmaması.
Bileşik anahtardaki kısmi bağımlılıkların kaldırılması.
Anahtar olmayan alanların başka anahtar olmayan alanlara bağımlı olmaması.
Okuma performansı veya basitlik için bazı verileri bilinçli tekrar saklama.
Tabloları, alanları ve ilişkileri görsel olarak gösteren diyagram.
- DDLT
CREATE, ALTER ve DROP gibi şema tanımlama komutları.
- DMLT
SELECT, INSERT, UPDATE ve DELETE gibi veri işleme komutları.
Yeni tablo ve sütunlarını oluşturur.
Mevcut tablo yapısını değiştirir.
Tabloyu ve verisini kaldırır.
Veritabanından veri okur.
Tabloya yeni kayıt ekler.
Mevcut kayıt alanlarını değiştirir.
Kayıtları tablodan siler.
Sorgu sonucunu koşullara göre filtreler.
Sorgu sonucunu bir veya daha fazla alana göre sıralar.
Kayıtları ortak değerlere göre gruplar.
Gruplanmış sonuçları aggregate koşullarıyla filtreler.
Dönecek kayıt sayısını sınırlar.
Sonuç kümesinin başından belirli sayıda kaydı atlar.
Tekrarlanan sonuç satırlarını tekilleştirir.
Tablo veya sütuna sorgu içinde geçici kısa ad verir.
Bir kayıt grubundan tek özet değer üretir.
Kayıt veya değer sayısını hesaplar.
- SUMT
Sayısal değerlerin toplamını hesaplar.
- AVGT
Sayısal değerlerin ortalamasını hesaplar.
En küçük veya en büyük değeri bulur.
- JOINT
İlişkili tablolardaki satırları tek sonuçta birleştirir.
Her iki tarafta eşleşen kayıtları döndürür.
Sol tablonun tüm kayıtlarını ve varsa sağ eşleşmeleri döndürür.
Sağ tablonun tüm kayıtlarını ve varsa sol eşleşmeleri döndürür.
Her iki tablonun eşleşen ve eşleşmeyen kayıtlarını döndürür.
İki tablonun tüm olası satır kombinasyonlarını üretir.
Başka SQL sorgusunun içinde çalışan alt sorgu.
WITH ile isimlendirilen geçici sorgu sonucu.
Hiyerarşik veya graph verisini yinelemeli sorgulayan CTE.
Satırları bir arada tutarken grup üzerinden sıra ve toplam hesaplayan fonksiyon.
Seçilen sıralamaya göre her satıra sıra numarası verir.
- RANKO
Eşit değerlere aynı sıralamayı vererek derecelendirir.
Window function hesaplamasını bağımsız gruplara ayırır.
- ViewO
Kaydedilmiş SELECT sorgusunu sanal tablo gibi sunar.
Sorgu sonucunu fiziksel olarak saklayıp belirli zamanda yeniler.
Veritabanı içinde saklanan ve çağrılan işlem kodu.
Veritabanı içinde değer veya tablo döndüren tekrar kullanılabilir kod.
INSERT, UPDATE veya DELETE olayıyla otomatik çalışan veritabanı işlemi.
Birden fazla işlemi tek atomik iş birimi olarak yürütür.
Transaction başlatır.
Transaction içindeki değişiklikleri kalıcı yapar.
Transaction içindeki değişiklikleri geri alır.
Transaction içinde kısmi geri dönüş noktası oluşturur.
- ACIDO
Transaction güvenilirliğini açıklayan atomicity, consistency, isolation ve durability ilkeleri.
Transaction işlemlerinin ya tamamen uygulanması ya da hiç uygulanmaması.
Transaction öncesi ve sonrası veri kurallarının geçerli kalması.
Eş zamanlı transaction'ların birbirini hangi düzeyde görebileceğini belirler.
Commit edilen verinin arıza sonrası da kalıcı olması.
Read Committed, Repeatable Read ve Serializable gibi eş zamanlılık seviyesi.
Başka transaction'ın commit edilmemiş verisini okuma anomalisi.
Aynı transaction içinde aynı satırın farklı değerlerle okunması.
Aynı koşullu sorguda yeni veya kaybolan satırların görülmesi.
- MVCCİ
Okuma ve yazmaları satır sürümleriyle daha az kilitle yürüten eş zamanlılık yaklaşımı.
- LockO
Aynı veriye eş zamanlı erişimi kontrol eden kilit.
Belirli satırların başka transaction'larca değiştirilmesini sınırlar.
Tablonun geniş kapsamlı işlemler için kilitlenmesi.
Transaction'ların birbirinin kilidini sonsuza dek beklemesi durumu.
Belirli sütunlarda kayıt bulmayı hızlandıran ek veri yapısı.
Eşitlik, aralık ve sıralama sorgularında yaygın kullanılan dengeli ağaç index'i.
Özellikle eşitlik karşılaştırmalarına odaklanan hash tabanlı index.
Array, JSONB ve full-text gibi çok değerli yapılarda kullanılan ters index.
Geometrik, aralık ve özel operatör sınıfları için genellenebilir index.
Fiziksel olarak sıralı çok büyük tablolarda blok özetleri tutan küçük index.
Birden fazla sütunu belirli sırayla içeren index.
Yalnızca WHERE koşuluna uyan satırları index'leyen yapı.
lower(email) gibi hesaplanmış ifade üzerinde oluşturulan index.
Sorgunun ihtiyaç duyduğu sütunları index içinde taşıyarak tablo erişimini azaltır.
Bir index alanındaki değerlerin kayıtları ne kadar iyi ayırabildiği.
SQL sorgusu için olası çalışma planlarını maliyete göre değerlendirir.
Sorgunun scan, join ve sort adımlarının nasıl çalışacağını gösterir.
Sorgunun tahmini çalışma planını gösterir.
Sorguyu gerçekten çalıştırıp tahmini ve gerçek süreleri gösterir.
Tablonun satırlarını baştan sona okuma işlemi.
Uygun kayıtları index üzerinden bulup tablo satırlarına erişme.
Sorgu, index ve veri modelini daha düşük maliyetle çalışacak hâle getirme.
Uygulama ile veritabanı sunucusu arasındaki oturum.
Açık bağlantıları yeniden kullanarak bağlantı maliyetini azaltan havuz.
PostgreSQL bağlantılarını hafif süreçle havuzlayan proxy.
SQL yapısını önceden hazırlayıp parametrelerle güvenli ve verimli çalıştırma.
Kullanıcı verisini SQL metnine birleştirmeden parametre olarak gönderme.
Kontrolsüz girdinin SQL sorgusunun anlamını değiştirmesi güvenlik açığı.
- ORMO
Tablo ve ilişkileri programlama dili nesneleriyle yönetme katmanı.
SQL sorgularını zincirlenen programlama API'siyle oluşturma aracı.
Şema değişikliklerini kod dosyalarıyla sürümlendirme.
Canlı veritabanı yapısının beklenen migration durumundan farklılaşması.
Sistemin çalışması veya test edilmesi için başlangıç kayıtları.
Testlerde kullanılan sabit örnek veri.
Kaydı fiziksel silmek yerine deleted_at veya durum alanıyla gizleme.
Kaydı fiziksel olarak veritabanından kaldırma.
created_at, updated_at, created_by gibi kayıt geçmişi alanları.
Kim, neyi, ne zaman ve hangi değerden hangi değere değiştirdi bilgisini tutar.
Verinin geçerlilik ve değişim zamanlarını modelleme yaklaşımı.
Verinin ne kadar süre tutulup ne zaman silineceğini belirleyen politika.
Veritabanının geri yüklenebilir kopyası.
Şema ve veriyi SQL veya mantıksal formatta dışa aktaran yedek.
Veritabanı dosyaları ve WAL seviyesinde alınan yedek.
Base backup ve işlem loglarıyla belirli zamana geri dönme.
Veriyi bir veritabanı sunucusundan diğerine kopyalama.
Yazma alan ana sunucu ve veriyi kopyalayan okuma/yedek sunucuları.
Okuma yükünü dağıtmak için kullanılan salt-okunur veya sınırlı replica.
Ana veritabanı arızasında başka düğümün primary rolünü devralması.
Veriyi anahtara göre birden fazla bağımsız veritabanı parçasına dağıtma.
Büyük tabloyu tarih veya anahtar aralıklarına göre alt parçalara bölme.
Analitik ve raporlama için farklı kaynaklardan tarihsel veri toplayan sistem.
- OLTPO
Çok sayıda kısa günlük işlem için optimize edilmiş veri sistemi.
- OLAPO
Büyük veri üzerinde toplu analiz ve raporlama için optimize edilmiş sistem.
- ETLO
Veriyi kaynaktan çıkarma, dönüştürme ve hedef sisteme yükleme süreci.
Yapılandırılmış ve yapılandırılmamış ham veriyi geniş ölçekte saklayan depo.
| Kavram | Seviye | Kısa açıklama |
|---|---|---|
| Database | T | Uygulama verisini kalıcı, sorgulanabilir ve yönetilebilir biçimde saklayan sistem. |
| DBMS | T | Veritabanı oluşturma, sorgulama, güvenlik ve yedekleme işlemlerini yöneten yazılım. |
| Relational Database | T | Veriyi satır ve sütunlardan oluşan ilişkili tablolarda saklayan veritabanı. |
| SQL | T | İlişkisel veritabanlarında veri tanımlama, sorgulama ve değiştirme dili. |
| PostgreSQL | T | Gelişmiş veri türleri, transaction ve genişletilebilirlik sunan açık kaynak ilişkisel veritabanı. |
| MySQL | T | Web uygulamalarında yaygın kullanılan açık kaynak ilişkisel veritabanı. |
| MariaDB | T | MySQL uyumlu açık kaynak ilişkisel veritabanı. |
| SQLite | T | Tek dosyada ve sunucusuz çalışan gömülü ilişkisel veritabanı. |
| NoSQL | O | İlişkisel tablo modelinden farklı veri modelleri kullanan veritabanı ailesi. |
| Document Database | O | Veriyi JSON benzeri dokümanlar olarak saklayan NoSQL türü. |
| MongoDB | O | BSON dokümanları ve collection yapısını kullanan NoSQL veritabanı. |
| Key-value Store | T | Veriyi benzersiz anahtar ve karşılık gelen değer olarak saklayan sistem. |
| Redis | T | Bellek ağırlıklı çalışan, cache, queue ve geçici veri için kullanılan veri deposu. |
| Column-family Database | İ | Veriyi geniş ve dağıtık sütun ailelerinde saklayan NoSQL modeli. |
| Graph Database | İ | Varlık ve ilişkileri node-edge yapısıyla saklayan veritabanı. |
| Schema | T | Tablo, sütun, tür, ilişki ve kısıtların tanımı. |
| Database Schema | T | Bir veritabanındaki nesnelerin mantıksal yapısı. |
| Table | T | Aynı tür kayıtları satır ve sütunlar hâlinde saklayan yapı. |
| Row / Record | T | Tablodaki tek bir varlık veya olay kaydı. |
| Column / Field | T | Kayıtların belirli özelliğini ve veri türünü tanımlayan alan. |
| Data Type | T | Sütunun integer, text, date veya boolean gibi saklayacağı değer türü. |
| Integer | T | Tam sayı veri türü. |
| Bigint | T | Daha geniş aralıkta tam sayı veri türü. |
| Numeric / Decimal | T | Para gibi kesin ondalık hesaplar için kullanılan veri türü. |
| Float / Double | O | Yaklaşık ondalık sayı saklayan kayan nokta türü. |
| Varchar | T | Belirli üst sınıra sahip değişken uzunluklu metin. |
| Text | T | Uzun veya sınırı uygulamaya bırakılmış metin alanı. |
| Boolean | T | Doğru veya yanlış değer tutan tür. |
| Date | T | Takvim tarihini saat bilgisi olmadan saklar. |
| Time | T | Günün saat bilgisini tarih olmadan saklar. |
| Timestamp | T | Tarih ve saat bilgisini birlikte saklar. |
| Timezone | O | Tarih-saat değerinin hangi saat dilimine göre yorumlandığını belirleyen bilgi. |
| UUID | O | Dağıtık ortamlarda üretilebilen 128 bit benzersiz kimlik. |
| JSON Column | O | Yapılandırılmış JSON verisini bir ilişkisel tablo sütununda saklar. |
| Array Column | O | Birden fazla aynı tür değeri tek sütunda saklayan veritabanı türü. |
| Enum | O | Sütun değerini önceden tanımlanmış seçeneklerle sınırlar. |
| Primary Key | T | Tablodaki her satırı benzersiz tanımlayan sütun veya sütun grubu. |
| Foreign Key | T | Bir tablodaki alanı başka tablonun primary key kaydına bağlayan kısıt. |
| Unique Constraint | T | Bir sütun veya sütun kombinasyonunda tekrar eden değeri engeller. |
| Not Null | T | Sütunun boş değer kabul etmemesini sağlar. |
| Default Value | T | Yeni kayıt eklenirken alan verilmezse kullanılacak varsayılan değer. |
| Check Constraint | O | Sütun veya kayıt değerinin belirli koşula uymasını zorunlu kılar. |
| Constraint | T | Veri bütünlüğünü korumak için veritabanının uyguladığı kural. |
| Auto Increment | T | Yeni kayıtlar için artan sayısal kimliği otomatik üretir. |
| Sequence | O | Sıralı benzersiz sayı üreten veritabanı nesnesi. |
| Identity Column | O | Veritabanı standardına uygun otomatik kimlik sütunu. |
| Composite Key | O | Birden fazla sütunun birlikte benzersiz kimlik oluşturması. |
| Natural Key | O | T.C. kimlik veya ürün kodu gibi iş verisinden gelen anahtar. |
| Surrogate Key | O | İş anlamı taşımayan yapay id veya UUID anahtarı. |
| Relationship | T | Tablolar arasındaki veri bağlantısı. |
| One-to-one | T | Bir kaydın diğer tabloda en fazla bir kayıtla ilişkilendiği yapı. |
| One-to-many | T | Bir kaydın diğer tabloda çok sayıda kayıtla ilişkilendiği yapı. |
| Many-to-many | T | İki tablodaki kayıtların karşılıklı çok sayıda ilişki kurabildiği yapı. |
| Junction Table | T | Many-to-many ilişkiyi iki foreign key ile temsil eden ara tablo. |
| Self-referencing Relation | O | Bir tablonun foreign key ile yine kendi tablosuna bağlanması. |
| Parent-child Model | T | Kategori veya organizasyon gibi hiyerarşik kayıt ilişkisi. |
| Adjacency List Model | O | Hiyerarşiyi her kayıtta parent_id tutarak modelleme. |
| Closure Table | İ | Tüm ata-torun ilişkilerini ayrı tabloda saklayan hiyerarşi modeli. |
| Normalization | O | Tekrarı ve güncelleme sorunlarını azaltmak için veriyi ilişkili tablolara ayırma. |
| First Normal Form | O | Her hücrede atomik değer bulunması ve tekrar eden sütun gruplarının olmaması. |
| Second Normal Form | O | Bileşik anahtardaki kısmi bağımlılıkların kaldırılması. |
| Third Normal Form | O | Anahtar olmayan alanların başka anahtar olmayan alanlara bağımlı olmaması. |
| Denormalization | O | Okuma performansı veya basitlik için bazı verileri bilinçli tekrar saklama. |
| Entity Relationship Diagram | T | Tabloları, alanları ve ilişkileri görsel olarak gösteren diyagram. |
| DDL | T | CREATE, ALTER ve DROP gibi şema tanımlama komutları. |
| DML | T | SELECT, INSERT, UPDATE ve DELETE gibi veri işleme komutları. |
| CREATE TABLE | T | Yeni tablo ve sütunlarını oluşturur. |
| ALTER TABLE | T | Mevcut tablo yapısını değiştirir. |
| DROP TABLE | T | Tabloyu ve verisini kaldırır. |
| SELECT | T | Veritabanından veri okur. |
| INSERT | T | Tabloya yeni kayıt ekler. |
| UPDATE | T | Mevcut kayıt alanlarını değiştirir. |
| DELETE | T | Kayıtları tablodan siler. |
| WHERE | T | Sorgu sonucunu koşullara göre filtreler. |
| ORDER BY | T | Sorgu sonucunu bir veya daha fazla alana göre sıralar. |
| GROUP BY | T | Kayıtları ortak değerlere göre gruplar. |
| HAVING | O | Gruplanmış sonuçları aggregate koşullarıyla filtreler. |
| LIMIT | T | Dönecek kayıt sayısını sınırlar. |
| OFFSET | T | Sonuç kümesinin başından belirli sayıda kaydı atlar. |
| DISTINCT | T | Tekrarlanan sonuç satırlarını tekilleştirir. |
| Alias | T | Tablo veya sütuna sorgu içinde geçici kısa ad verir. |
| Aggregate Function | T | Bir kayıt grubundan tek özet değer üretir. |
| COUNT | T | Kayıt veya değer sayısını hesaplar. |
| SUM | T | Sayısal değerlerin toplamını hesaplar. |
| AVG | T | Sayısal değerlerin ortalamasını hesaplar. |
| MIN / MAX | T | En küçük veya en büyük değeri bulur. |
| JOIN | T | İlişkili tablolardaki satırları tek sonuçta birleştirir. |
| INNER JOIN | T | Her iki tarafta eşleşen kayıtları döndürür. |
| LEFT JOIN | T | Sol tablonun tüm kayıtlarını ve varsa sağ eşleşmeleri döndürür. |
| RIGHT JOIN | O | Sağ tablonun tüm kayıtlarını ve varsa sol eşleşmeleri döndürür. |
| FULL OUTER JOIN | O | Her iki tablonun eşleşen ve eşleşmeyen kayıtlarını döndürür. |
| CROSS JOIN | O | İki tablonun tüm olası satır kombinasyonlarını üretir. |
| Subquery | O | Başka SQL sorgusunun içinde çalışan alt sorgu. |
| Correlated Subquery | İ | Dış sorgunun mevcut satırına bağlı olarak tekrar çalışan alt sorgu. |
| Common Table Expression | O | WITH ile isimlendirilen geçici sorgu sonucu. |
| Recursive CTE | İ | Hiyerarşik veya graph verisini yinelemeli sorgulayan CTE. |
| Window Function | İ | Satırları bir arada tutarken grup üzerinden sıra ve toplam hesaplayan fonksiyon. |
| ROW_NUMBER | O | Seçilen sıralamaya göre her satıra sıra numarası verir. |
| RANK | O | Eşit değerlere aynı sıralamayı vererek derecelendirir. |
| PARTITION BY | İ | Window function hesaplamasını bağımsız gruplara ayırır. |
| View | O | Kaydedilmiş SELECT sorgusunu sanal tablo gibi sunar. |
| Materialized View | İ | Sorgu sonucunu fiziksel olarak saklayıp belirli zamanda yeniler. |
| Stored Procedure | O | Veritabanı içinde saklanan ve çağrılan işlem kodu. |
| Function | O | Veritabanı içinde değer veya tablo döndüren tekrar kullanılabilir kod. |
| Trigger | O | INSERT, UPDATE veya DELETE olayıyla otomatik çalışan veritabanı işlemi. |
| Transaction | T | Birden fazla işlemi tek atomik iş birimi olarak yürütür. |
| BEGIN | T | Transaction başlatır. |
| COMMIT | T | Transaction içindeki değişiklikleri kalıcı yapar. |
| ROLLBACK | T | Transaction içindeki değişiklikleri geri alır. |
| Savepoint | O | Transaction içinde kısmi geri dönüş noktası oluşturur. |
| ACID | O | Transaction güvenilirliğini açıklayan atomicity, consistency, isolation ve durability ilkeleri. |
| Atomicity | O | Transaction işlemlerinin ya tamamen uygulanması ya da hiç uygulanmaması. |
| Consistency | O | Transaction öncesi ve sonrası veri kurallarının geçerli kalması. |
| Isolation | O | Eş zamanlı transaction'ların birbirini hangi düzeyde görebileceğini belirler. |
| Durability | O | Commit edilen verinin arıza sonrası da kalıcı olması. |
| Isolation Level | İ | Read Committed, Repeatable Read ve Serializable gibi eş zamanlılık seviyesi. |
| Dirty Read | İ | Başka transaction'ın commit edilmemiş verisini okuma anomalisi. |
| Non-repeatable Read | İ | Aynı transaction içinde aynı satırın farklı değerlerle okunması. |
| Phantom Read | İ | Aynı koşullu sorguda yeni veya kaybolan satırların görülmesi. |
| MVCC | İ | Okuma ve yazmaları satır sürümleriyle daha az kilitle yürüten eş zamanlılık yaklaşımı. |
| Lock | O | Aynı veriye eş zamanlı erişimi kontrol eden kilit. |
| Row Lock | O | Belirli satırların başka transaction'larca değiştirilmesini sınırlar. |
| Table Lock | O | Tablonun geniş kapsamlı işlemler için kilitlenmesi. |
| Deadlock | İ | Transaction'ların birbirinin kilidini sonsuza dek beklemesi durumu. |
| Index | T | Belirli sütunlarda kayıt bulmayı hızlandıran ek veri yapısı. |
| B-tree Index | O | Eşitlik, aralık ve sıralama sorgularında yaygın kullanılan dengeli ağaç index'i. |
| Hash Index | O | Özellikle eşitlik karşılaştırmalarına odaklanan hash tabanlı index. |
| GIN Index | İ | Array, JSONB ve full-text gibi çok değerli yapılarda kullanılan ters index. |
| GiST Index | İ | Geometrik, aralık ve özel operatör sınıfları için genellenebilir index. |
| BRIN Index | İ | Fiziksel olarak sıralı çok büyük tablolarda blok özetleri tutan küçük index. |
| Composite Index | O | Birden fazla sütunu belirli sırayla içeren index. |
| Partial Index | İ | Yalnızca WHERE koşuluna uyan satırları index'leyen yapı. |
| Expression Index | İ | lower(email) gibi hesaplanmış ifade üzerinde oluşturulan index. |
| Covering Index | İ | Sorgunun ihtiyaç duyduğu sütunları index içinde taşıyarak tablo erişimini azaltır. |
| Index Selectivity | İ | Bir index alanındaki değerlerin kayıtları ne kadar iyi ayırabildiği. |
| Query Planner | İ | SQL sorgusu için olası çalışma planlarını maliyete göre değerlendirir. |
| Query Plan | O | Sorgunun scan, join ve sort adımlarının nasıl çalışacağını gösterir. |
| EXPLAIN | O | Sorgunun tahmini çalışma planını gösterir. |
| EXPLAIN ANALYZE | İ | Sorguyu gerçekten çalıştırıp tahmini ve gerçek süreleri gösterir. |
| Sequential Scan | O | Tablonun satırlarını baştan sona okuma işlemi. |
| Index Scan | O | Uygun kayıtları index üzerinden bulup tablo satırlarına erişme. |
| Query Optimization | O | Sorgu, index ve veri modelini daha düşük maliyetle çalışacak hâle getirme. |
| Connection | T | Uygulama ile veritabanı sunucusu arasındaki oturum. |
| Connection Pool | O | Açık bağlantıları yeniden kullanarak bağlantı maliyetini azaltan havuz. |
| PgBouncer | O | PostgreSQL bağlantılarını hafif süreçle havuzlayan proxy. |
| Prepared Statement | O | SQL yapısını önceden hazırlayıp parametrelerle güvenli ve verimli çalıştırma. |
| Parameterized Query | T | Kullanıcı verisini SQL metnine birleştirmeden parametre olarak gönderme. |
| SQL Injection | T | Kontrolsüz girdinin SQL sorgusunun anlamını değiştirmesi güvenlik açığı. |
| ORM | O | Tablo ve ilişkileri programlama dili nesneleriyle yönetme katmanı. |
| Query Builder | O | SQL sorgularını zincirlenen programlama API'siyle oluşturma aracı. |
| Migration | T | Şema değişikliklerini kod dosyalarıyla sürümlendirme. |
| Schema Drift | O | Canlı veritabanı yapısının beklenen migration durumundan farklılaşması. |
| Seed Data | T | Sistemin çalışması veya test edilmesi için başlangıç kayıtları. |
| Fixture | O | Testlerde kullanılan sabit örnek veri. |
| Soft Delete | O | Kaydı fiziksel silmek yerine deleted_at veya durum alanıyla gizleme. |
| Hard Delete | T | Kaydı fiziksel olarak veritabanından kaldırma. |
| Audit Column | T | created_at, updated_at, created_by gibi kayıt geçmişi alanları. |
| Audit Log | O | Kim, neyi, ne zaman ve hangi değerden hangi değere değiştirdi bilgisini tutar. |
| Temporal Data | İ | Verinin geçerlilik ve değişim zamanlarını modelleme yaklaşımı. |
| Data Retention | O | Verinin ne kadar süre tutulup ne zaman silineceğini belirleyen politika. |
| Backup | T | Veritabanının geri yüklenebilir kopyası. |
| Logical Backup | O | Şema ve veriyi SQL veya mantıksal formatta dışa aktaran yedek. |
| Physical Backup | İ | Veritabanı dosyaları ve WAL seviyesinde alınan yedek. |
| Point-in-time Recovery | İ | Base backup ve işlem loglarıyla belirli zamana geri dönme. |
| Replication | O | Veriyi bir veritabanı sunucusundan diğerine kopyalama. |
| Primary / Replica | O | Yazma alan ana sunucu ve veriyi kopyalayan okuma/yedek sunucuları. |
| Read Replica | O | Okuma yükünü dağıtmak için kullanılan salt-okunur veya sınırlı replica. |
| Failover | İ | Ana veritabanı arızasında başka düğümün primary rolünü devralması. |
| Sharding | İ | Veriyi anahtara göre birden fazla bağımsız veritabanı parçasına dağıtma. |
| Partitioning | İ | Büyük tabloyu tarih veya anahtar aralıklarına göre alt parçalara bölme. |
| Data Warehouse | O | Analitik ve raporlama için farklı kaynaklardan tarihsel veri toplayan sistem. |
| OLTP | O | Çok sayıda kısa günlük işlem için optimize edilmiş veri sistemi. |
| OLAP | O | Büyük veri üzerinde toplu analiz ve raporlama için optimize edilmiş sistem. |
| ETL | O | Veriyi kaynaktan çıkarma, dönüştürme ve hedef sisteme yükleme süreci. |
| Data Lake | İ | Yapılandırılmış ve yapılandırılmamış ham veriyi geniş ölçekte saklayan depo. |
Bölüm uygulamaları
Bu bölümü bitirmeden önce şunları deneyin veya açıklayın.
- Ürün, varyant, kategori, stok, sipariş ve sipariş kalemi tabloları için ER diyagramı çizin.
- Bir yavaş sorguyu EXPLAIN ile inceleyip hangi index'in neden gerekli olabileceğini açıklayın.
- Para transferini transaction ile modelleyin; rollback gerektiren hata senaryolarını yazın.