- SQLite veritabanı dosyası, uygulama durumunu saklamak veya değiş tokuş etmek için uygun, tek dosya tabanlı bir biçimdir
- Mevcut özel biçimler, dosya yığını (pile-of-files), ZIP tabanlı biçimlere göre daha yapısaldır ve SQL şeması ile açıkça tanımlanabilir
- Transaction, index ve yüksek seviyeli sorgu dili sayesinde veri erişilebilirliği ve kararlılık sağlar; artımlı güncellemeleri ve çoklu süreç erişimini destekler
- Çapraz platform uyumluluğu, genişletilebilirlik, performans ve çeşitli dil arayüzleri ile geliştirme verimliliğini ve bakım kolaylığını artırır
- Açık veri yapısı ve şema merkezli tasarım sayesinde daha iyi uygulama kalitesi ve uzun vadeli veri korunabilirliği sağlar
Uygulama dosya biçimi kavramı
- Uygulama dosya biçimi, program durumunu diske kaydetmek veya programlar arasında bilgi alışverişi yapmak için kullanılan dosya yapısıdır
- Örnekler: DOC, DWG, PDF, XLS, GIT, EPUB, ODT, PPT, ODP
- Dosya biçimi (file format) tek bir nesneyi saklarken (ör. JPEG, GIF, XHTML), uygulama biçimi (application format) birden çok nesneyi ve bunların ilişkilerini birlikte saklar
- Uygulama biçimlerinin çoğu üç türe ayrılır
- Özel biçim: DOC, DWG, PDF gibi belirli bir uygulamaya özel ikili yapı; harici araçlarla erişilemez
- Dosya yığını (pile-of-files): Git gibi birden çok dosyadan oluşan yapı; bazı kısımları okunması kolaydır ama taşınabilirlik ve tutarlılık yönetimi zordur
- ZIP tabanlı biçim (wrapped pile-of-files): EPUB, ODT, ODP gibi dosya yığınlarının ZIP ile sıkıştırılmış hali; tek dosyadır ancak değişiklikte tümünün yeniden yazılması gerekir
SQLite'ı yeni bir uygulama dosya biçimi olarak kullanmak
- SQLite veritabanı, basit bir anahtar/değer şemasıyla bile (
CREATE TABLE files(filename TEXT PRIMARY KEY, content BLOB);) dosya yığını yapısının yerini alabilir
- Sıkıştırıldığında ZIP arşiviyle boyut farkı ±%1 içinde kalır
- Tek tek dosyalar düzeyinde değişiklik yapılabildiğinden tüm dosyanın yeniden yazılması gerekmez
- SQLite; çok sayıda tablo, alan, veri tipi, kısıt ve index içerebildiği için karmaşık veri ilişkilerini verimli şekilde ifade eder
- Özel biçim düzeyinde ifade gücü sunarken tanım ve kod miktarı çok daha yalındır ve özel araçlar olmadan erişilebilir
SQLite biçiminin başlıca avantajları
-
1. Geliştirmeyi basitleştirmesi
- Dosya G/Ç özelliklerini tamamlamak için yalnızca SQLite kütüphanesini veya tek kaynak dosyayı (
sqlite3.c) dahil etmek yeterlidir
- Binlerce satır koddan ve bakım maliyetinden tasarruf sağlar
- Dünya genelinde milyarlarca SQLite dosyası kullanılmaktadır ve yoğun şekilde test edilmiş bir kararlılık sunar
-
2. Tek dosyalı belge yapısı
- Tüm veriler tek bir dosyada saklandığı için taşıma, kopyalama ve ekleme kolaydır
- Dosya başlığındaki Application ID ile belge türü tanımlanabilir
-
3. Yüksek seviyeli sorgu dili
- SQL ile veri erişim mantığı sadeleşir; geliştirici yalnızca ne istediğini tanımlar
- Anahtar/değer tabanlı dosyalara göre transaction, index ve şema desteği sayesinde hata olasılığı azalır
-
4. Erişilebilir içerik
- SQLite dosyaları açıkça belgelenmiş açık bir biçimdir ve komut satırı araçlarıyla doğrudan erişilebilir
- ABD Kongre Kütüphanesi, bunu uzun vadeli dijital koruma biçimi olarak önermektedir
- 2004'ten beri süren geriye dönük uyumluluk, uzun vadeli erişimi güvence altına alır
-
5. Çapraz platform uyumluluğu
- 32/64 bit, endian farkları ve Windows/Unix ailesi arasında tam uyumluluk sağlar
- Metin için UTF-8 ve UTF-16LE/BE arasında otomatik dönüştürme desteği vardır
-
6. Atomik transaction'lar
- Sistem hatası veya elektrik kesintisi durumunda bile veri bozulması olmadan eksiksiz yazma garantisi verir
- Değişiklikler gruplanarak rollback ve doğrulama yapılabilir; Fossil DVCS bu özelliği kullanır
-
7. Artımlı ve sürekli güncelleme
- Yalnızca değişen kısımlar diske yazıldığı için hız artar ve SSD aşınması azalır
- Otomatik kaydetme ve oturumlar arası undo/redo yığını koruma mümkündür
-
8. Kolay genişletilebilirlik
- Yalnızca yeni tablo veya sütun ekleyerek özellik genişletilebilir; mevcut sorgularla uyumluluk korunur
- Yapısal değişiklikler, özel biçimlere kıyasla çok daha kolaydır
-
9. Performans
- Dosya yığınından daha hızlı okuma/yazma mümkündür; özellikle 100KB altı BLOB işlemlerinde güçlüdür
- Sadece index eklemek veya
ANALYZE çalıştırmak bile performans iyileştirmesi sağlayabilir
- Özel biçimlerde aynı sorunu çözmek için kod değişikliği gerekir
-
10. Çoklu süreçte eşzamanlı erişim
- SQLite eşzamanlı erişimi otomatik olarak koordine eder
- Birden çok süreç aynı anda okuyabilir, yazma ise sıralı işlenir
- Biçimin bozulmasını otomatik olarak önler
-
11. Çeşitli programlama dilleri desteği
- C, C++, C#, Java, Python, Ruby, JavaScript gibi çoğu dil için arayüz sunar
- Farklı diller ve ekipler ortak bir şema üzerinden birlikte çalışabilir
-
12. Daha iyi uygulama mimarisi
- SQLite şemasının kendisi, dosya biçiminin eksiksiz dokümantasyonu işlevini görür
- Özel biçimlerde yüzlerce sayfalık spesifikasyon gerekirken SQL şeması kısa ve açıktır
- Fred Brooks, Rob Pike ve Linus Torvalds alıntılarıyla veri yapısı merkezli tasarımın önemi vurgulanır
Sonuç
- SQLite her durum için kusursuz olmasa da, çoğu uygulamada özel biçim, dosya yığını ve ZIP biçimlerinden daha iyi bir seçenektir
- Kararlılık, genişletilebilirlik, performans, erişilebilirlik ve uyumluluğu bir araya getiren yüksek seviyeli bir dosya biçimi olarak,
yeni nesil uygulama tasarımlarında standart dosya biçimi adayı olarak değerlendirilmeyi hak eder
Henüz yorum yok.