Buyukweb
SQLite Nedir ve Ne Zaman Kullanılır? Hafif Veritabanı Rehberi

SQLite Nedir ve Ne Zaman Kullanılır? Hafif Veritabanı Rehberi

SQLite nedir, nasıl kullanılır ve ne zaman tercih edilmeli? Dosya tabanlı veritabanının avantajları, kısıtlamaları ve yaygın kullanım senaryoları.

Büyükweb Teknik Ekibi15 Şubat 20267 dakika okuma

SQLite Nedir ve Ne Zaman Kullanılır?

SQLite, sunucu gerektirmeyen, tek bir dosyada saklanan, kompakt ve hızlı bir ilişkisel veritabanı motorudur. Dünya üzerinde milyarlarca cihazda kullanılan en yaygın veritabanıdır.

SQLite'ın Benzersiz Özellikleri

  • Sunucusuz: Ayrı bir sunucu process çalıştırılmaz
  • Tek dosya: Tüm veritabanı tek .db dosyasında
  • Sıfır yapılandırma: Kurulum veya yönetim gerektirmez
  • ACID uyumlu: Transaction desteği tam
  • Taşınabilir: Dosyayı kopyalayın, taşıdınız
  • Gömülü: Uygulamanın içine dahil edilebilir

Kullanım Senaryoları

SQLite Uygun:

  • Mobil uygulamalar (iOS/Android)
  • Masaüstü uygulamalar
  • Küçük/orta web uygulamaları (< 100 eş zamanlı yazma)
  • Prototip ve geliştirme ortamları
  • Konfigürasyon dosyası yerine
  • Test veritabanı
  • Gömülü sistemler, IoT

SQLite Uygun Değil:

  • Yüksek eş zamanlı yazma operasyonları
  • Büyük ölçekli web uygulamaları
  • Çok kullanıcılı aynı anda yazma senaryoları
  • Ağ üzerinden erişim gereksinimleri

SQLite vs MySQL/PostgreSQL

Özellik SQLite MySQL PostgreSQL
Kurulum Yok Gerekli Gerekli
Eş zamanlı yazma Düşük Yüksek Yüksek
Ağ erişimi Hayır Evet Evet
Dosya boyutu Tek dosya Dizin Dizin
Kullanım kolaylığı Çok kolay Orta Orta
Ölçeklenebilirlik Düşük Yüksek Çok yüksek

SQLite Kurulumu

# Ubuntu/Debian
apt install sqlite3

# RHEL/Rocky Linux
dnf install sqlite

# macOS (genellikle kurulu)
sqlite3 --version

# Python ile kullanım (built-in)
python3 -c "import sqlite3; print('SQLite:', sqlite3.sqlite_version)"

sqlite3 CLI Kullanımı

# Veritabanı aç/oluştur
sqlite3 blog.db

# Yardım
.help

# Tablo listesi
.tables

# Tablo yapısı
.schema kullanicilar

# Çıktı formatı
.mode column
.headers on

# Dosyadan SQL çalıştır
.read init.sql

# Yedekle
.backup blog_backup.db

# Çıkış
.quit

SQL Operasyonları

-- Tablo oluştur
CREATE TABLE IF NOT EXISTS yazilar (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    baslik TEXT NOT NULL,
    icerik TEXT,
    tarih DATETIME DEFAULT CURRENT_TIMESTAMP,
    yazar TEXT,
    aktif INTEGER DEFAULT 1
);

-- Veri ekle
INSERT INTO yazilar (baslik, icerik, yazar)
VALUES ('Merhaba Dünya', 'İlk yazım...', 'Ahmet');

-- Sorgula
SELECT * FROM yazilar WHERE aktif = 1 ORDER BY tarih DESC LIMIT 10;

-- Güncelle
UPDATE yazilar SET aktif = 0 WHERE id = 5;

-- Sil
DELETE FROM yazilar WHERE id = 10;

-- Index
CREATE INDEX idx_yazar ON yazilar(yazar);

Python ile SQLite

import sqlite3
import os

# Bağlan (veya oluştur)
conn = sqlite3.connect('blog.db')
conn.row_factory = sqlite3.Row  # Dict benzeri erişim
c = conn.cursor()

# Tablo oluştur
c.execute('''CREATE TABLE IF NOT EXISTS yazilar
             (id INTEGER PRIMARY KEY, baslik TEXT, icerik TEXT)''')

# Veri ekle (parametre ile - SQL injection önlemi)
c.execute("INSERT INTO yazilar (baslik, icerik) VALUES (?, ?)",
          ("Başlık", "İçerik buraya"))
conn.commit()

# Sorgula
c.execute("SELECT * FROM yazilar")
yazilar = c.fetchall()
for yazi in yazilar:
    print(dict(yazi))

conn.close()

Node.js ile SQLite (better-sqlite3)

npm install better-sqlite3
const Database = require('better-sqlite3');
const db = new Database('blog.db');

// Tablo oluştur
db.exec(`CREATE TABLE IF NOT EXISTS yazilar (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    baslik TEXT NOT NULL,
    tarih TEXT DEFAULT CURRENT_TIMESTAMP
)`);

// Veri ekle
const insert = db.prepare('INSERT INTO yazilar (baslik) VALUES (?)');
insert.run('Yeni Yazı');

// Sorgula
const rows = db.prepare('SELECT * FROM yazilar').all();
console.log(rows);

// Transaction
const insertMany = db.transaction((yazilar) => {
    const stmt = db.prepare('INSERT INTO yazilar (baslik) VALUES (?)');
    for (const yazi of yazilar) {
        stmt.run(yazi.baslik);
    }
});
insertMany([{baslik: 'Yazı 1'}, {baslik: 'Yazı 2'}]);

PHP ile SQLite (PDO)

$pdo = new PDO('sqlite:/var/www/blog.db');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('SELECT * FROM yazilar WHERE aktif = ?');
$stmt->execute([1]);
$yazilar = $stmt->fetchAll(PDO::FETCH_ASSOC);

Yedekleme

# Dosya kopyası (en basit yedek)
cp blog.db blog_backup_$(date +%Y%m%d).db

# sqlite3 ile yedek
sqlite3 blog.db ".backup /backups/blog.db"

# SQL dump
sqlite3 blog.db ".dump" > blog_dump.sql

# Geri yükle
sqlite3 yeni_blog.db < blog_dump.sql

WAL Modu (Performans)

-- WAL (Write-Ahead Logging) modu daha iyi eş zamanlı okuma sağlar
PRAGMA journal_mode=WAL;

-- Diğer önemli pragma'lar
PRAGMA synchronous=NORMAL;  -- Daha hızlı ama biraz daha az güvenli
PRAGMA cache_size=10000;    -- Önbellek sayfası sayısı
PRAGMA temp_store=MEMORY;   -- Geçici tabloları bellekte tut

Bu blog sitesi de SQLite kullanmaktadır. Büyükweb hosting paketlerinde MySQL ile production-grade veritabanı çözümü sunuyoruz.


Veritabani Performans Optimizasyonu

Veritabani web uygulamalarinin kalbidir.

MySQL/MariaDB Tuning

innodb_buffer_pool_size'i RAM'in %60-70'ine ayarlayin. slow_query_log ile yavas sorgulari tespit edin. max_connections optimize edin.

Indeksleme

WHERE, JOIN, ORDER BY sutunlarina indeks ekleyin. EXPLAIN ile sorgu planlari analiz edin. Composite index kullanin.

Baglanti Havuzu

ProxySQL ile gelismis baglanti yonetimi. Connection pooling ile maliyet azaltma. Persistent connections kullanin.

Replikasyon

Master-Slave ile okuma yukunu dagitin. Galera Cluster ile multi-master yuksek erisilebilirlik. Semi-senkron replikasyon degerlendirin.

Yedekleme

mysqldump mantiksal, xtrabackup fiziksel yedek. Binary log ile point-in-time recovery. Incremental yedekleme ile tasarruf.

Sik Sorulan Sorular

MySQL mi PostgreSQL mi?

MySQL cogu web uygulamasi ile uyumlu. PostgreSQL gelismis veri tipleri ve JSON icin ideal. CMS'ler genelde MySQL kullanir.

Veritabanim buyudu ne yapmaliyim?

Gereksiz verileri temizleyin, tablo optimize edin, arsivleme yapin, partitioning kullanin.

Ne siklikla yedek almaliyim?

Kritik veritabanlari saatlik, standart siteler gunluk. Buyuk degisikliklerden once manuel yedek.

Sonuc

Veritabani optimizasyonu uygulama performansini dogrudan etkiler. Indeksleme, tuning ve yedekleme ile veri katmaninizi guclendirin.

Veritabani Boyut Yonetimi

Buyuk Tablolar icin Stratejiler

  • Partitioning: Tarihe gore tablolari bolumlendirin. Sorgu performansi artar.
  • Arsivleme: Eski verileri arsiv tablolarina tasiyin.
  • Sikistirma: InnoDB sikistirmasi ile disk kullanimini %50-75 azaltin.

WordPress Veritabani Optimizasyonu

  • wp_options autoload: Gereksiz autoload kayitlari temizleyin.
  • Post revisions: wp-config.php'de WP_POST_REVISIONS sinirlayin.
  • Transient veriler: Suresi dolmus verileri duzenli temizleyin.
  • Spam yorumlar: Toplu silin.

Veritabani Guvenlik

  • Varsayilan portu degistirin
  • Uygulama bazli kullanici olusturun
  • Minimum gerekli yetki verin
  • SSL ile baglanti sifreleyin
  • Duzenli guvenlik taramasi yapin

Neden Buyukweb?

Buyukweb, 2009 yilindan bu yana Turkiye'nin guvenilir hosting firmasidir. Bursa Pendc Tier 3 veri merkezinde profesyonel barindirma hizmetleri sunmaktadir.

Teknik Altyapi Avantajlari

  • NVMe SSD Diskler: Geleneksel disklere gore 10x daha hizli okuma/yazma
  • LiteSpeed Web Server: Apache'ye kiyasla 10x performans artisi
  • CloudLinux Izolasyonu: Her hesap icin ayri kaynak limiti
  • Imunify360 Guvenlik: Otomatik malware tarama ve engelleme
  • DDoS Korumasi: L3, L4, L7 katmanlarinda kapsamli koruma

Musteri Memnuniyeti

5.200'den fazla aktif musteri ile %99.8 uptime garantisi sunuyoruz. 7/24 Turkce teknik destek ekibimiz tum sorulariniza hizla yanit verir. Ucretsiz site tasima hizmeti ile mevcut hosting saglayicinizdan kolayca gecis yapabilirsiniz.

Fiyat-Performans Dengesi

Rekabetci fiyatlarla profesyonel hosting altyapisi sunuyoruz. Yillik odemede ek indirimler, ucretsiz SSL sertifikasi ve gunluk otomatik yedekleme tum paketlerde standarttir.

Kolay Yonetim

cPanel ve Plesk kontrol panelleri ile web sitenizi, e-postalarinizi ve veritabaninizi tek panelden kolayca yonetin. Softaculous ile 400'den fazla uygulamayi tek tikla kurun.

Hosting Sektoru ve Gelecek Trendleri

Dijitallesme ile birlikte hosting sektoru hizla donusuyor. Edge computing, serverless mimariler ve container teknolojileri geleneksel hosting yaklasimlarini tamamliyor. Ancak guvenilir bir fiziksel altyapi her zaman temel gereksinim olmaya devam edecek.

Yapay Zeka ve Hosting

AI destekli guvenlik sistemleri, otomatik optimizasyon araclari ve akilli izleme cozumleri hosting kalitesini artiriyor. Imunify360 gibi AI tabanli guvenlik yazilimlari, saldiri kaliplarini ogrenererek proaktif koruma sagliyor.

Surdurulebilir Hosting

Yesil enerji kullanan veri merkezleri, enerji verimli sunucular ve karbon notr barindirma hizmetleri gelecekte daha onemli hale gelecek. Verimli donanim ve akilli sogutma sistemleri ile enerji maliyetleri azaltiliyor.

5G ve Mobil Oncelik

5G teknolojisinin yayginlasmasi ile mobil trafik daha da artacak. Mobile-first hosting cozumleri, edge caching ve AMP destegi onemini koruyacak. Web sitelerinin mobilde 2 saniyenin altinda yuklenmesi standart beklenti haline geliyor.

Etiketler:

#sqlite#veritabanı#database#veri yönetimi

Bu yazıyı paylaş