yoklateknik mülakat

Veritabanı Senior Mülakat Soruları

1595 doğrulanmış Veritabanı Senior mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Backup RecoveryZorluk 3
Bir veritabanını, farklı bir major versiyonda ve farklı bir CPU mimarisinde çalışan bir sunucuya taşıman gerekiyor.
# seçenek A (physical): ham veri dosyalarını kopyala
# seçenek B (logical): pg_dump olddb | psql -h newhost newdb

Genelde hangisi daha güvenli ve neden?
  • aPhysical dosya kopyası, çünkü ham veri dosyaları versiyonlar ve CPU mimarileri arasında her zaman uyumludur
  • bHiçbiri işe yaramaz — veri sunucular arasında yalnızca önce streaming replication kurularak taşınır
  • cİkisi de burada eşdeğerdir, çünkü backup formatının platformlar arası taşınabilirlikle ilgisi yoktur
  • dLogical SQL dump, çünkü taşınabilirdir ve farklı bir versiyona ya da platforma yeniden yüklenebilir
Açıklama:Physical backup, major versiyonlar ve mimariler arasında değişebilen motor-içi dosya formatlarını kopyalar; başka yere restore etmek kırılgandır. Logical dump ise motorun okuyabildiği SQL/veridir; versiyonlar ve platformlar arası taşımanın standart aracı tam da bu yüzden odur. Replication (b) kopyaları senkron tutar ama migration için ön koşul değildir.
Backup RecoveryZorluk 3
pg_dump proddb > /backups/nightly.sql   # cron job, her gece exit 0

Bu iş bir yıl boyunca her gece başarıyla (exit 0) bitti ama gerçek bir kesintide restore başarısız oldu. Bu klasik durum neyi gösterir?
  • aDump dosyası zamanla, restore sürecinin geri yükleyemeyeceği kadar büyüdü
  • bYeşil bir backup işi komutun çalıştığını kanıtlar, çıktının restore edilebilir olduğunu değil
  • cBackup'lar asla cron ile zamanlanmamalı; ayrı bir backup agent'ı zorunludur
  • dSQL dump'lar birkaç aydan eski olduklarında restore edilemez hale gelir
Açıklama:Sıfır exit code, dump komutunun çalıştığını gösterir; çıktının eksiksiz ve restore edilebilir olduğunu değil — yanlış bir flag, dışlanan bir şema ya da sessiz kesilme, sen gerçekten restore edene dek (ör. psql newdb < /backups/nightly.sql ile ayrı bir veritabanına) gizli kalır. 'Backup'ımız var'ı 'kurtarabiliriz'e ancak gerçek bir test restore çevirir. Diğer şıklar sebebi yanlış teşhis eder.
Backup RecoveryZorluk 3
cp -r /var/lib/db/data /backup/data   # veritabanı canlı ve yazma alıyor

Bir mühendis, veritabanı yazma almaya devam ederken veri dizinini düz bir recursive kopya ile yedekliyor; hiçbir snapshot ya da koordinasyon yok. Temel risk nedir?
  • aKopya her zaman çalışan veritabanının kusursuz, tamamen restore edilebilir bir görüntüsüdür
  • bRecursive kopya bitene kadar gelen tüm yazmalar otomatik olarak bloklanır
  • cKopya iç tutarsız olabilir ve geçerli bir duruma restore edilemeyebilir
  • dİşletim sistemi, yazılırken kopyayı otomatik olarak şifreler
Açıklama:Canlı kopya, veri değişmeye devam ederken dosyaları bir zaman aralığında okur; dosya A ile dosya B farklı anları yansıtabilir — başlamayı reddedebilecek ya da yarı-uygulanmış transaction içeren yırtık, tutarsız bir görüntü. Güvenli physical backup, consistent snapshot ya da motorun backup modunu kullanır. Kopya ne bloklanır (b), ne geçerliliği garantidir (a), ne de şifrelenir (d).
Backup RecoveryZorluk 3
CREATE INDEX idx_orders_customer ON orders (customer_id);

Çok büyük, yüksek trafikli bir orders tablosunda, böyle düz bir şema değişikliğini production'da çalıştırmak neden riskli olabilir?
  • aIndex oluşturmak, tabloda halihazırda bulunan satırları kalıcı olarak bozar
  • bBazı değişiklikler tabloyu kilitler ya da uzun sürer; yazmayı (ve bazı DDL'lerde okumayı) bloklayıp downtime'a yol açar
  • cBöyle bir şema değişikliği başladıktan sonra asla geri alınamaz
  • dİfade çalışabilmeden önce tüm tablo belleğe yüklenmelidir
Açıklama:Büyük ve yoğun bir tabloda index oluşturmak gibi bir işlem lock tutabilir ve sorguları durduracak kadar uzun sürebilir; bu yüzden ekipler bunu düşük trafikli pencerelere alır ya da online/concurrent varyantları kullanır. Veriyi bozmaz (a), DROP INDEX ile geri alınabilir (c) ve tabloyu RAM'e yüklemeyi gerektirmez (d).
Backup RecoveryZorluk 3
Her Pazar bir full backup, Pazartesi–Cumartesi her gece bir differential backup alıyorsun. Veritabanını Çarşamba geceki haline restore etmek için hangi backup'lara ihtiyacın var?
  • aPazar'dan Çarşamba'ya kadar tüm backup'lar: full ile Pazartesi, Salı ve Çarşamba differential'ları
  • bYalnızca Pazar'ın full backup'ı ile Çarşamba gecesinin differential'ı
  • cYalnızca Çarşamba gecesinin differential backup'ı, tamamen tek başına
  • dYalnızca Pazar'ın full backup'ı, differential'ların hiçbiri olmadan
Açıklama:Differential, son full backup'tan sonra değişen her şeyi içerir; yani her gecenin differential'ı önceki günlerin değişikliklerini de kapsar — hedef gecen için yalnızca full + o bir differential yeter. Zincirdeki her differential'ı uygulamak (a) bir incremental stratejiyi tarif eder; differential tek başına (c) bir base'e sahip değildir, full tek başına (d) ise haftanın değişikliklerini kaçırır.
Data ModelingZorluk 3
order_items(order_id, product_id, quantity, product_name) tablosunun composite primary key'i (order_id, product_id) ve product_name yalnızca product_id'ye bağlı. Sorun ve çözümü nedir?
  • a1NF'i ihlal eder çünkü product_name tekrar eder; her değeri kendi satırına ayır
  • bTransitive dependency ile 3NF'i ihlal eder; quantity'yi başka tabloya taşı
  • c2NF'i ihlal eder: product_name anahtarın bir parçasına partial dependency'dir; bir products tablosuna taşı
  • dHiçbir normal form'u ihlal etmez; geniş bir sipariş satırı tablosu her zaman kabul edilebilir bir tasarımdır
Açıklama:2NF, anahtar olmayan her kolonun composite key'in tamamına bağlı olmasını ister. product_name yalnızca anahtarın parçası olan product_id'ye bağlıdır — partial dependency — dolayısıyla product_id ile anahtarlanan bir products tablosuna aittir. Değerler atomiktir, yani 1NF sorunu değildir (a) ve partial dependency, 3NF'in ele aldığı transitive dependency'den farklıdır (b).

2475 soruluk Veritabanı bankasında kendini sına.

Mülakata başla