Menu
Coddy logo textTech

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.

Yazan Kevin Spektor, Kurucu ortak ve CTO

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:

  1. Programın genellikle SQL (Structured Query Language) ile yazılmış bir sorgu gönderir.
  2. 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ı.
  3. 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.
  4. 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ürVeriyi nasıl saklarÖrneklerTipik kullanım
İlişkisel (SQL)Anahtarlarla bağlanan, satır ve sütunlardan oluşan tablolarPostgreSQL, MySQL, SQLite, Oracle, SQL ServerKullanıcılar, siparişler, ödemeler: çoğu uygulama
DokümanJSON benzeri dokümanlarMongoDB, Firestore, CouchDBAlanları kayıttan kayda değişen kayıtlar
Anahtar-değerTek bir anahtarla aranan bir değerRedis, DynamoDBÖnbellekler, oturumlar, sayaçlar
Geniş sütunluBirçok sunucuya yayılmış, esnek sütunlu satırlarCassandra, HBaseÇok yüksek yazma hacimleri
GrafDüğümler ve aralarındaki ilişkilerNeo4jSosyal ağlar, öneriler
Zaman serisiZamana göre dizinlenmiş ölçümlerInfluxDB, TimescaleDBMetrikler, sensör okumaları
VektörSayı listeleri (embedding'ler)pgvector, Pinecone, MilvusYapay 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 tabloVeritabanı
BoyutProgramının yükleyebildiği kadarExcel'de sayfa başına 1.048.576 satırMilyarlarca satır
Aynı anda birden fazla yazanHayırSınırlıEvet, kilitler ve transaction'larla
Tek bir kaydı bulmakTüm dosyayı okuFiltrele ya da araIndex ile arama
Veri üzerindeki kurallarYokOpsiyonel doğrulamaTipler, kısıtlar, yabancı anahtarlar
Soru sormakKendi kodunu yazFormüllerSQL 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.
Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA