DEV Community

Vebende Akademi
Vebende Akademi

Posted on

SQLite: Dünyanın En Yaygın Veritabanı Motoru

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
Enter fullscreen mode Exit fullscreen mode

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")
Enter fullscreen mode Exit fullscreen mode

satırı veritabanını oluşturmak için yeterlidir.


2. Tek Dosya Yapısı

Tüm veriler tek bir dosyada tutulur.

uygulama.db
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

SQLite'ta ise:

Uygulama
     ↓
SQLite Library
     ↓
Database File
Enter fullscreen mode Exit fullscreen mode

Bu nedenle ağ gecikmesi yoktur.


SQLite Nasıl Çalışır?

Örneğin:

import sqlite3

conn = sqlite3.connect("urunler.db")
Enter fullscreen mode Exit fullscreen mode

komutu çalıştırıldığında:

urunler.db
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

hemen kullanılabilir.


İlk SQLite Uygulaması

Veritabanı Oluşturma

import sqlite3

conn = sqlite3.connect("okul.db")
cursor = conn.cursor()
Enter fullscreen mode Exit fullscreen mode

Tablo Oluşturma

cursor.execute("""
CREATE TABLE ogrenciler (
    id INTEGER PRIMARY KEY,
    ad TEXT,
    soyad TEXT
)
""")
Enter fullscreen mode Exit fullscreen mode

Veri Ekleme

cursor.execute("""
INSERT INTO ogrenciler
(ad, soyad)
VALUES
('Ahmet', 'Yılmaz')
""")

conn.commit()
Enter fullscreen mode Exit fullscreen mode

Veri Okuma

cursor.execute("""
SELECT *
FROM ogrenciler
""")

for row in cursor.fetchall():
    print(row)
Enter fullscreen mode Exit fullscreen mode

Çıktı:

(1, 'Ahmet', 'Yılmaz')
Enter fullscreen mode Exit fullscreen mode

Parametreli Sorgular

Yeni başlayanların yaptığı en büyük hata:

ad = input()

sql = f"""
SELECT *
FROM kullanicilar
WHERE ad = '{ad}'
"""
Enter fullscreen mode Exit fullscreen mode

ş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,)
)
Enter fullscreen mode Exit fullscreen mode

ş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
);
Enter fullscreen mode Exit fullscreen mode

İndeks:

CREATE INDEX idx_email
ON musteriler(email);
Enter fullscreen mode Exit fullscreen mode

Bu sayede:

SELECT *
FROM musteriler
WHERE email='test@test.com';
Enter fullscreen mode Exit fullscreen mode

ç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()
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

otomatik olarak:

db.sqlite3
Enter fullscreen mode Exit fullscreen mode

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())
Enter fullscreen mode Exit fullscreen mode

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)