SQLite: Dünyanın En Yaygın Veritabanı Motoru
Veritabanları denildiğinde çoğu geliştiricinin aklına ilk olarak PostgreSQL, MySQL, Oracle veya Microsoft SQL Server gelir. Ancak günlük hayatta en fazla kullanılan veritabanı motoru büyük ihtimalle bunlardan hiçbiri değildir.
Bugün milyarlarca cihazın içerisinde çalışan, internet bağlantısı gerektirmeyen, sunucu kurmadan kullanılabilen ve tek bir dosyada tüm verileri saklayan teknoloji:
SQLite'tır.
Cep telefonlarından web tarayıcılarına, gömülü sistemlerden masaüstü uygulamalarına kadar sayısız platformda çalışan SQLite, yazılım dünyasının en başarılı mühendislik projelerinden biri olarak kabul edilmektedir.
SQLite Nedir?
SQLite, gömülü (Embedded) çalışan, sunucusuz (Serverless), açık kaynak kodlu ve ilişkisel (Relational) bir veritabanı motorudur.
Diğer veritabanlarının aksine:
- Ayrı bir servis kurulmaz
- Sunucu çalıştırılmaz
- Yönetim paneli gerekmez
- Ağ bağlantısı kullanılmaz
Veritabanı doğrudan uygulamanın içerisine gömülür.
Çoğu durumda tüm veriler yalnızca tek bir dosyada saklanır.
Örneğin:
musteriler.db
Bu dosya;
- Tabloları
- İndeksleri
- Verileri
- Triggerları
- View'leri
içerir.
SQLite Neden Bu Kadar Popüler?
SQLite'in başarısının arkasında üç temel neden vardır:
1. Kurulum Gerektirmez
PostgreSQL kurarken:
- Servis kurulur
- Kullanıcı oluşturulur
- Port açılır
- Yetkilendirme yapılır
SQLite'ta ise:
import sqlite3
conn = sqlite3.connect("uygulama.db")
satırı veritabanını oluşturmak için yeterlidir.
2. Tek Dosya Yapısı
Tüm veriler tek bir dosyada tutulur.
uygulama.db
Bu dosya:
- Kopyalanabilir
- Yedeklenebilir
- E-posta ile gönderilebilir
- USB belleğe taşınabilir
3. Son Derece Kararlıdır
SQLite yaklaşık yirmi beş yıldır geliştirilmektedir.
Milyarlarca cihazda kullanılmasına rağmen hata geçmişi son derece düşüktür.
Bu nedenle:
- Havacılık
- Savunma
- Mobil cihazlar
- Endüstriyel sistemler
gibi alanlarda güvenle kullanılmaktadır.
SQLite Nerelerde Kullanılır?
Birçok geliştirici SQLite'in sadece eğitim amaçlı kullanıldığını düşünür.
Gerçekte ise dünyanın en yaygın veritabanı motorlarından biridir.
Mobil Uygulamalar
Android cihazların büyük kısmında SQLite bulunur.
iOS uygulamalarının önemli bölümü de SQLite kullanır.
Web Tarayıcıları
Google Chrome
Yerel verilerin bir kısmını SQLite içerisinde saklar.
Mozilla Firefox
Profil bilgileri ve geçmiş kayıtlarında SQLite kullanır.
Masaüstü Yazılımları
- Muhasebe programları
- ERP sistemleri
- CRM uygulamaları
- CAD yazılımları
sıklıkla SQLite kullanır.
IoT ve Gömülü Sistemler
- Akıllı sayaçlar
- Endüstriyel PLC sistemleri
- Sensör ağları
- Araç takip sistemleri
hafif yapısı nedeniyle SQLite tercih eder.
Yapay Zekâ Uygulamaları
Son yıllarda:
- AI Agent sistemleri
- RAG uygulamaları
- Yerel LLM çözümleri
- Edge AI cihazları
SQLite kullanmaktadır.
SQLite Mimarisi
Klasik veritabanlarında mimari şöyledir:
Uygulama
↓
Network
↓
Database Server
↓
Disk
SQLite'ta ise:
Uygulama
↓
SQLite Library
↓
Database File
Bu nedenle ağ gecikmesi yoktur.
SQLite Nasıl Çalışır?
Örneğin:
import sqlite3
conn = sqlite3.connect("urunler.db")
komutu çalıştırıldığında:
urunler.db
dosyası oluşturulur.
Tüm SQL işlemleri doğrudan bu dosya üzerinde gerçekleştirilir.
Python ve SQLite
Python geliştiricileri için SQLite'in en büyük avantajı standart kütüphane içerisinde gelmesidir.
Ek kurulum gerekmez.
import sqlite3
hemen kullanılabilir.
İlk SQLite Uygulaması
Veritabanı Oluşturma
import sqlite3
conn = sqlite3.connect("okul.db")
cursor = conn.cursor()
Tablo Oluşturma
cursor.execute("""
CREATE TABLE ogrenciler (
id INTEGER PRIMARY KEY,
ad TEXT,
soyad TEXT
)
""")
Veri Ekleme
cursor.execute("""
INSERT INTO ogrenciler
(ad, soyad)
VALUES
('Ahmet', 'Yılmaz')
""")
conn.commit()
Veri Okuma
cursor.execute("""
SELECT *
FROM ogrenciler
""")
for row in cursor.fetchall():
print(row)
Çıktı:
(1, 'Ahmet', 'Yılmaz')
Parametreli Sorgular
Yeni başlayanların yaptığı en büyük hata:
ad = input()
sql = f"""
SELECT *
FROM kullanicilar
WHERE ad = '{ad}'
"""
şeklinde sorgu oluşturmaktır.
Bu yaklaşım SQL Injection saldırılarına açıktır.
Doğru yöntem:
cursor.execute(
"""
SELECT *
FROM kullanicilar
WHERE ad = ?
""",
(ad,)
)
şeklindedir.
SQLite Veri Tipleri
SQLite veri tipi konusunda oldukça esnektir.
Temel veri tipleri:
| Veri Tipi | Açıklama |
|---|---|
| INTEGER | Tamsayı |
| REAL | Ondalıklı sayı |
| TEXT | Metin |
| BLOB | Binary veri |
| NULL | Boş değer |
İndeksler
Büyük veri kümelerinde indeks kullanmak kritik öneme sahiptir.
Tablo:
CREATE TABLE musteriler(
id INTEGER,
email TEXT
);
İndeks:
CREATE INDEX idx_email
ON musteriler(email);
Bu sayede:
SELECT *
FROM musteriler
WHERE email='test@test.com';
çok daha hızlı çalışır.
Transaction Yönetimi
SQLite ACID özelliklerini destekler.
ACID:
- Atomicity
- Consistency
- Isolation
- Durability
özelliklerinin tamamını sunar.
Örnek:
conn.execute("BEGIN")
try:
cursor.execute(...)
cursor.execute(...)
conn.commit()
except:
conn.rollback()
SQLite ve ORM Sistemleri
SQLite birçok ORM tarafından desteklenmektedir.
Python tarafında:
SQLAlchemy
Django ORM
Peewee
Tortoise ORM
SQLite ile doğrudan çalışabilir.
SQLite ve Django
Django varsayılan olarak SQLite kullanır.
Yeni proje oluşturduğunuzda:
django-admin startproject okul
otomatik olarak:
db.sqlite3
dosyası oluşur.
Bu nedenle milyonlarca Python geliştiricisi SQLite ile çalışmaya başlamaktadır.
SQLite ve Veri Bilimi
SQLite veri bilimi projelerinde de sıkça kullanılır.
Örneğin Pandas ile:
import pandas as pd
import sqlite3
conn = sqlite3.connect("satis.db")
df = pd.read_sql(
"SELECT * FROM satislar",
conn
)
print(df.head())
SQLite ve DuckDB Karşılaştırması
| Özellik | SQLite | DuckDB |
|---|---|---|
| Amaç | Uygulama Veritabanı | Analitik Veritabanı |
| Mimari | Satır Bazlı | Kolon Bazlı |
| CRUD | Çok Güçlü | Orta |
| Dashboard Analitiği | Orta | Çok Güçlü |
| Transaction | Güçlü | Sınırlı |
| Mobil Kullanım | Mükemmel | Uygun Değil |
| Embedded Sistemler | Mükemmel | Sınırlı |
Özetle:
- Uygulama geliştiriyorsanız → SQLite
- Analitik yapıyorsanız → DuckDB
tercih edilmelidir.
SQLite'in Güçlü Yanları
Son Derece Küçük
SQLite kütüphanesi birkaç megabayttan küçüktür.
Kurulum Gerektirmez
Sunucu yönetimi yoktur.
Hızlıdır
Yerel disk erişimi sayesinde birçok senaryoda oldukça yüksek performans sunar.
Taşınabilirdir
Tek dosya yapısı büyük avantaj sağlar.
Ücretsizdir
Herhangi bir lisans maliyeti bulunmaz.
SQLite'in Sınırlamaları
Çok Kullanıcılı Sistemler
Binlerce eşzamanlı yazma işlemi için tasarlanmamıştır.
Büyük Kurumsal Sistemler
Milyarlarca satırlık ve yüksek trafik alan sistemlerde:
- PostgreSQL
- MySQL
- Microsoft SQL Server
daha uygun seçeneklerdir.
Dağıtık Yapılar
Cluster mimarileri için tasarlanmamıştır.
Yazılım Dünyasında SQLite'in Önemi
SQLite çoğu zaman "küçük veritabanı" olarak görülse de gerçekte yazılım dünyasının temel taşlarından biridir. Mobil cihazlardan masaüstü uygulamalarına, IoT sistemlerinden yapay zekâ çözümlerine kadar milyarlarca cihazda çalışmaktadır.
Python geliştiricileri için ise SQLite, veritabanı dünyasına giriş yapmak için en ideal teknolojidir. Kurulum gerektirmemesi, standart kütüphane içerisinde gelmesi, SQL öğrenimini kolaylaştırması ve üretim ortamlarında dahi kullanılabilecek kadar kararlı olması nedeniyle her Python geliştiricisinin mutlaka öğrenmesi gereken teknolojiler arasında yer alır.
Bir yazılım geliştiricisi için SQLite yalnızca bir veritabanı değil, aynı zamanda veriyi yönetmenin, saklamanın ve ilişkisel modellemeyi öğrenmenin en pratik yoludur. Modern yazılım ekosisteminde PostgreSQL, MySQL veya büyük veri platformlarına geçmeden önce edinilecek SQLite bilgisi, veritabanı mühendisliğinin sağlam temellerini oluşturur.
Top comments (0)