Veritabanı (Database) Nedir?
Veritabanı, programların onu hızlı ve güvenli şekilde bulabilmesi, ekleyebilmesi, değiştirebilmesi ve silebilmesi için bir bilgisayarda saklanan düzenli bir veri topluluğudur. PostgreSQL, MySQL, SQLite ya da MongoDB gibi veritabanı yönetim sistemi (VTYS, DBMS) denen bir yazılım tarafından yönetilir.
Güncellendi: 24 Eylül 2026
Bir web sitesine giriş yaptığında site hesabını milyonlarca hesap arasından bulmalı, şifreni kontrol etmeli ve ayarlarını yüklemelidir; hepsini birkaç milisaniyede. Bir metin dosyası açıp satır satır okumaz. Bir veritabanına SELECT * FROM users WHERE email = 'ana@example.com' gibi bir istek gönderir ve veritabanı, bir kitabın sonundaki dizin gibi bir index kullanarak doğrudan doğru satıra atlar.
Veritabanı nasıl çalışır
İki parça birlikte çalışır. Veritabanı, sabit bir yapıda düzenlenmiş veridir. Veritabanı yönetim sistemi (VTYS, DBMS) ise bu veriyi dosyalarda saklayan, tutarlı tutan ve istekleri cevaplayan programdır. PostgreSQL, MySQL ve SQLite birer VTYS'dir; müşteri listen ise veritabanıdır.
İlişkisel bir veritabanında veri tablolarda yaşar. Her tablonun sütunları (ad, ülke, puan) ve satırları (her kullanıcı için bir tane) vardır. Bir istek şu adımlardan geçer:
- Programın genellikle SQL (Structured Query Language) ile yazılmış bir sorgu gönderir.
- VTYS sorguyu ayrıştırır ve nasıl cevaplayacağını planlar: hangi tabloları okuyacağını ve bir index'in satırların çoğunu atlayıp atlayamayacağını.
- Veriyi diskten sabit boyutlu sayfalar halinde okur (SQLite'ta varsayılan 4.096 byte, PostgreSQL'de 8 KB) ve sık kullanılan sayfaları bellekte tutar.
- Satırları filtreler, sıralar ve birleştirir, sonra sonucu döndürür.
Python SQLite ile birlikte gelir, bu yüzden gerçek bir veritabanını burada çalıştırabilirsin:
Kenji 340
Omar 340
Ana 120
users: 4 average points: 222.5
Program nasıl arama yapılacağını hiç söylemez. İstediği sonucu tarif eder ve ona nasıl ulaşılacağına VTYS karar verir. Bir veritabanına soru sormakla bir liste üzerinde döngü yazmak arasındaki asıl fark budur.
Veritabanı türleri
| Tür | Veriyi nasıl saklar | Örnekler | Tipik kullanım |
|---|---|---|---|
| İlişkisel (SQL) | Anahtarlarla bağlanan, satır ve sütunlardan oluşan tablolar | PostgreSQL, MySQL, SQLite, Oracle, SQL Server | Kullanıcılar, siparişler, ödemeler: çoğu uygulama |
| Doküman | JSON benzeri dokümanlar | MongoDB, Firestore, CouchDB | Alanları kayıttan kayda değişen kayıtlar |
| Anahtar-değer | Tek bir anahtarla aranan bir değer | Redis, DynamoDB | Önbellekler, oturumlar, sayaçlar |
| Geniş sütunlu | Birçok sunucuya yayılmış, esnek sütunlu satırlar | Cassandra, HBase | Çok yüksek yazma hacimleri |
| Graf | Düğümler ve aralarındaki ilişkiler | Neo4j | Sosyal ağlar, öneriler |
| Zaman serisi | Zamana göre dizinlenmiş ölçümler | InfluxDB, TimescaleDB | Metrikler, sensör okumaları |
| Vektör | Sayı listeleri (embedding'ler) | pgvector, Pinecone, Milvus | Yapay zeka özellikleri için benzerlik araması |
İlişkisel olmayan her şey çoğu zaman NoSQL başlığı altında toplanır. İlişkisel veritabanları çoğu uygulama için varsayılan tercih olmaya devam eder, çünkü tablolar, kısıtlar ve SQL geniş bir sorun yelpazesini iyi karşılar. Birçok ürün türleri birleştirir de: PostgreSQL JSON dokümanları saklar, pgvector da ona vektör araması ekler.
Transaction'lar: ya hep ya hiç
Ana'dan Ben'e para aktarmak iki değişiklik gerektirir: Ben'e ekle, Ana'dan çıkar. Program ikisinin arasında çökerse para yoktan var olur. Bir transaction (işlem) değişiklikleri gruplar; böylece ya hepsi kaydedilir ya da hiçbiri. Burada ikinci değişiklik bir kuralı bozuyor (bakiye sıfırın altına inemez), bu yüzden veritabanı ilkini de geri alıyor:
transfer 30 done
{'ana': 20, 'ben': 30}
transfer 40 failed: CHECK constraint failed: balance >= 0
{'ana': 20, 'ben': 30}
Ben'e 40 eklendi ve sonra geri alındı, bu yüzden toplamlar hâlâ tutuyor. İlişkisel veritabanları transaction'lar için ACID olarak bilinen dört özelliği garanti eder: atomik (ya hep ya hiç), tutarlı (CHECK gibi kurallar her zaman geçerli), yalıtılmış (aynı anda transaction çalıştıran iki kullanıcı birbirinin yarım kalmış işini görmez) ve kalıcı (bir kez kaydedilen değişiklik bir çökmeden ya da elektrik kesintisinden sonra da kalır).
Veritabanı, elektronik tablo ve dosya karşılaştırması
| Metin ya da CSV dosyası | Elektronik tablo | Veritabanı | |
|---|---|---|---|
| Boyut | Programının yükleyebildiği kadar | Excel'de sayfa başına 1.048.576 satır | Milyarlarca satır |
| Aynı anda birden fazla yazan | Hayır | Sınırlı | Evet, kilitler ve transaction'larla |
| Tek bir kaydı bulmak | Tüm dosyayı oku | Filtrele ya da ara | Index ile arama |
| Veri üzerindeki kurallar | Yok | Opsiyonel doğrulama | Tipler, kısıtlar, yabancı anahtarlar |
| Soru sormak | Kendi kodunu yaz | Formüller | SQL ya da bir sorgu API'si |
Elektronik tablo, birkaç bin satıra bakan tek bir kişi için iyi bir araçtır. Birden fazla program ya da kullanıcı aynı anda veri yazdığında veya verinin kurallara uyması gerektiğinde doğru araç bir veritabanıdır.
Veritabanları veriyi nasıl korur
Bir VTYS her değişikliği veri dosyalarına dokunmadan önce bir log'a yazar (write-ahead log); böylece bir çökmeden sonra yarım kalan işi yeniden oynatabilir ya da geri alabilir. PostgreSQL her 8 KB'lık sayfada bir checksum saklayabilir ve arızalanan bir disk bozuk veri döndürdüğünde bir checksum hatası bildirir. Kullanıcılar ve izinler kimin hangi tabloları okuyabileceğine ya da değiştirebileceğine karar verir; replikasyon ise diğer sunucularda kopyalar tutar. Programlar da kullanıcı girdisini yukarıdaki ? yer tutucuları gibi parametre olarak geçmeli, asla SQL metnine yapıştırmamalıdır; SQL injection saldırıları bu şekilde olur.
Yaygın yanlış bilinenler
- "SQL bir veritabanıdır." SQL dildir. PostgreSQL, MySQL ve SQLite onu anlayan veritabanlarıdır.
- "NoSQL hiç SQL yok demektir." Terim genellikle "not only SQL" (yalnızca SQL değil) olarak okunur ve birçok NoSQL veritabanının Cassandra'nın CQL'i gibi SQL'e benzeyen sorgu dilleri vardır.
- "Veritabanı her zaman büyük bir sunucudur." SQLite, bir programın doğrudan açtığı, hiç sunucusu olmayan tek bir dosyadır. Her Android ve iOS telefonun içinde çalışır.
- "Veritabanındaki veri sonsuza kadar güvendedir." Bir veritabanı çökmelere karşı korur, birinin yanlışlıkla
DELETEçalıştırmasına karşı değil. Yedekler yine de gereklidir.
Sırada ne var
SQL kursu ilk SELECT'ten başlayarak sorguları öğretir. Sonraki adımları SQLite dokümanları anlatır: SQLite nedir, tablo oluşturma, index'ler ve SQL injection'ı önleme. Verinin diskte nasıl yerleştirildiğini görmek için byte nedir sayfasını oku; checksum sayfası ise hasarlı sayfaların nasıl tespit edildiğini açıklar.
Sıkça Sorulan Sorular
Basit bir dille veritabanı nedir?
Veritabanı, bir programın bilgiyi yeniden hızlıca bulabilmek için tuttuğu yerdir. Kusursuz bir dizini olan bir dosya dolabı düşün: "geçen haftaki tüm siparişleri" istersin ve milyonlarca kayıt olsa bile cevabı milisaniyeler içinde alırsın.
Veritabanına bir örnek verir misin?
Telefonundaki kişiler bir veritabanında saklanır: Android da iOS da SQLite ile gelir. Bir banka müşteri hesaplarını Oracle ya da PostgreSQL gibi bir veritabanında tutar, Wikipedia makalelerini MariaDB'de saklar. Bir çevrimiçi mağaza ürünleri, müşterileri ve siparişleri birbiriyle ilişkili tablolarda tutar.
Dört veritabanı türü nedir?
Resmi bir dörtlü liste yoktur. En sık adı geçen dördü ilişkisel veritabanları (tablolar ve SQL), doküman veritabanları (JSON benzeri kayıtlar), anahtar-değer depoları (bir anahtarla aranan bir değer) ve graf veritabanlarıdır (düğümler ve ilişkiler). Eski ders kitapları hiyerarşik ve ağ veritabanlarını da sayar.
En popüler 5 veritabanı hangisidir?
Oracle, MySQL, Microsoft SQL Server, PostgreSQL ve MongoDB yıllardır DB-Engines popülerlik sıralamasında ilk beş sırayı tutuyor. Geliştiriciler arasında PostgreSQL, 2023'ten beri Stack Overflow Developer Survey'de en çok kullanılan veritabanı; SQLite ise telefonların ve tarayıcıların içinde geldiği için en yaygın kurulu olanı.
Veritabanı ile VTYS (DBMS) arasındaki fark nedir?
Veritabanı, tablolarda ya da dokümanlarda düzenlenmiş verinin kendisidir. VTYS ise bu veriyi diskte saklayan ve ona yönelik istekleri cevaplayan yazılımdır, örneğin PostgreSQL ya da MySQL. İnsanlar çoğu zaman ikisi için de "veritabanı" der.
Veritabanı kullanmak için SQL öğrenmem gerekir mi?
İlişkisel veritabanları için evet: SQL, tablo oluşturmanın ve veriye soru sormanın yoludur ve temellerini öğrenmek birkaç gün sürer. Birçok program SQL'i senin yerine yazan bir kütüphane kullanır, ama SQL bilmek o kütüphanenin ne yaptığını ve bir sorgunun neden yavaş olduğunu anlamayı çok kolaylaştırır.