SQLite ileri düzey: dayanıklılık, arama ve şifreleme
SQLite’ta eşzamanlılığı, tam metin aramayı, JSON’u, şifrelemeyi ve uygulama veritabanlarının adli incelemesini öğrenirsin.
Seviye 201 · 16 ders · 15 pratik lab
Dersler
Dayanıklılık ve ayarlar
- İşlemler, günlük modları ve WAL: İşlemin ya hep ya hiç çalışmasını ve WAL kipinin okuma-yazma eşzamanlılığını nasıl artırdığını görebileceksin.
- PRAGMA ayarları: yabancı anahtar, eşzamanlama ve kilit bekleme: PRAGMA ile yabancı anahtar denetimini açmayı, yazma güvenliğini ve kilit beklemeyi ayarlamayı öğrenirsin.
- İndeksler ve EXPLAIN QUERY PLAN: Sorgunun indeks kullanıp kullanmadığını EXPLAIN QUERY PLAN ile okuyup bileşik ve kısmi indeks kurabileceksin.
- Çevrimiçi yedek, VACUUM ve bütünlük denetimi: Kullanımdaki veritabanını .backup ile yedeklemeyi, VACUUM ile küçültmeyi ve integrity_check ile bozulmayı yakalamayı öğrenirsin.
- STRICT tablolar ve üretilen sütunlar
- Kısa görev: bir uygulama için doğru PRAGMA ayarları
Gelişmiş sorgular
- CTE ve pencere fonksiyonları: Sorguyu WITH ile adımlara bölmeyi ve satırlar arası sıralama, birikimli toplam hesaplamayı öğrenirsin.
- SQLite JSON fonksiyonları: JSON metni saklayıp json_extract gibi fonksiyonlarla içinden değer çekmeyi ve sorguda kullanmayı öğrenirsin.
- FTS5 ile tam metin arama: FTS5 sanal tablosuyla büyük metinde hızlı, alaka sıralı arama kurabileceksin.
- Tetikleyiciler ve değişiklik izi: Satır değişince çalışan tetikleyiciyle değişiklikleri bir iz tablosuna yazmayı öğrenirsin.
- UPSERT ve RETURNING
- Kısa görev: not uygulamasına tam metin arama ekle
Güvenlik ve uygulama kullanımı
- Python sqlite3 ile parametreli sorgular: Python’dan kullanıcı girdisini sorguya yapıştırmak yerine ? yer tutucularıyla güvenle geçirmeyi öğrenirsin.
- SQLCipher ile veritabanı dosyasını şifrelemek: Dosya çalınsa bile okunamasın diye SQLCipher ile veritabanını şifrelemeyi ve anahtarı kodda tutmamayı öğrenirsin.
- Uygulama veritabanlarının adli incelemesi: Tarayıcı ve mesajlaşma uygulamalarının SQLite dosyalarını salt okunur açıp silinmiş kayıt izlerini (freelist, WAL) anlayabileceksin.
- Bitirme görevi: bir mobil uygulama veritabanını incele ve güçlendir
Pratik lablar
- Yabancı anahtar denetimini aç: Silinen kategorinin ürünleri ortada kalıyor; PRAGMA foreign_keys ile denetimi aç ve davranışı yeniden dene.
- "database is locked" hatasını WAL ile azalt: İki sürecin aynı anda yazdığı bir günlük veritabanında WAL kipi ve busy_timeout ile kilit hatalarını ölç ve azalt.
- Şişmiş veritabanını küçült ve doğrula: Silmelerden sonra büyük kalan dosyada boş sayfaları ölç, çevrimiçi yedek al, VACUUM uygula ve integrity_check ile doğrula.
- Tam tablo taramasını planda gör: EXPLAIN QUERY PLAN çıktısında hangi sorgunun SCAN, hangisinin SEARCH yaptığını belirle.
- Yavaş arama ekranına doğru indeksi ekle: Telefon rehberi uygulamasının soyad ve şehir aramasını ölç, bileşik indeks ekle ve süreyi karşılaştır.
- STRICT tablo ve üretilmiş sütunla veriyi sağlamlaştır: Gevşek türlü bir fatura tablosunu STRICT tabloya taşı, KDV'li tutarı üretilmiş sütunla hesapla ve indeksle.
- Yeni kaydı ekle ya da güncelle: Stok sayımı dosyasındaki ürünleri UPSERT ile tabloya işle; var olanın adedini güncelle, yenisini ekle.
- JSON alanının içinden rapor çıkar: Ayarları JSON olarak saklayan bir tablodan json_extract ile tema ve dil tercihlerinin dağılımını çıkar.
- Değişiklik izini tetikleyiciyle tut: Maaş tablosundaki her güncellemeyi eski ve yeni değerle bir denetim tablosuna yazan tetikleyiciler kur.
- Notlarda tam metin araması yap: Hazır bir FTS5 tablosunda iki kelimeyi birlikte ve ifade olarak arayan sorgular yaz.
- Aramayı alaka sırasına koy: Bilgi bankası makalelerinde bm25 ile sıralama ve snippet ile vurgulu özet döndüren bir arama yaz.
- FTS dizinini ana tabloyla eşit tut: Harici içerikli FTS5 tablosunu ana tabloya tetikleyicilerle bağla ve silme ile güncellemenin aramaya yansıdığını kanıtla.
- Uygulama veritabanında son mesajları bul: Bir mesajlaşma uygulamasının kopyalanmış veritabanında son 20 mesajı tarih ve kişiyle listele.
- Birleştirilmiş sorguyu parametreli hale getir: Python betiğindeki dize birleştirmeli sorguyu parametreli sorguya çevir ve kötü niyetli girdiyle test et.
- Telefon yedeğindeki zaman damgalarını çöz: Farklı epoch biçimleri kullanan üç uygulama veritabanındaki zaman damgalarını çözüp tek bir olay çizelgesinde birleştir.
Kurs hakkında
SQLite’ta eşzamanlılığı, tam metin aramayı, JSON’u, şifrelemeyi ve uygulama veritabanlarının adli incelemesini öğrenirsin.
Ne öğreneceksin
- Dayanıklılık ve ayarlar
- Gelişmiş sorgular
- Güvenlik ve uygulama kullanımı
Ön koşullar
Aynı yolun 101 düzeyindeki kurslarını bitirmiş olmak ya da o konuları biliyor olmak yeterlidir.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 201 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.