Ulaşım
- Adres: 2342 Sk, İpekyol, İpek Ap 49A, 63250 Haliliye/Şanlıurfa
- Telefon:
0505 532 36 38 - eMail: admin@alestaweb.com
Büyük veri denince akla genellikle karmaşık sunucular, kümeler ve aylar süren kurulumlar gelir. Ama ya tek bir dosyayla, hiçbir sunucu kurmadan, milyonlarca satırı saniyeler içinde sorgulayabilseydiniz? İşte DuckDB (DuckDB) tam olarak bunu yapıyor. SQLite'ın analitik dünyadaki karşılığı olarak tanımlanan DuckDB; sunucusuz (serverless), süreç içi (in-process) çalışan, sütun tabanlı (columnar) bir analitik veritabanıdır (OLAP database). CSV, Parquet ve JSON dosyalarını doğrudan SQL ile sorgulamanıza olanak tanır. Alesta Web ekibi olarak veri analizi ve raporlama işlerimizde DuckDB'yi düzenli kullanıyoruz; bu rehberde kurulumdan Python entegrasyonuna kadar her şeyi anlattık. Diğer veritabanı içeriklerimize alestaweb.com üzerinden ulaşabilirsiniz.
DuckDB, analitik iş yükleri için tasarlanmış, süreç içi (in-process) çalışan açık kaynak bir SQL veritabanı yönetim sistemidir. "In-process" ifadesi şu anlama gelir: DuckDB ayrı bir sunucu süreci olarak değil, doğrudan uygulamanızın içinde bir kütüphane gibi çalışır. Tıpkı SQLite gibi. Ama SQLite işlemsel (OLTP) yükler için optimize edilmişken, DuckDB analitik (OLAP) sorgular için optimize edilmiştir; yani toplama (aggregation), gruplama (group by) ve milyonlarca satır üzerinde hesaplama yapmakta ustadır.
Bunu mümkün kılan şey, DuckDB'nin sütun tabanlı (columnar) depolama ve vektörel sorgu işleme (vectorized execution) kullanması. Geleneksel satır tabanlı veritabanları her satırı tek tek işlerken, DuckDB veriyi sütun sütun işler ve bu analitik sorgularda muazzam bir hız kazandırır. Alesta Web olarak deneyimimize göre, daha önce pandas ile dakikalarca süren bazı toplulaştırma işlemleri DuckDB ile saniyelere indi.
DuckDB'nin en sevilen yanı kurulum gerektirmemesi (zero dependency). Ne bir sunucu, ne bir servis, ne de yapılandırma. Tek bir kütüphane ya da tek bir CLI ikilisi indiriyorsunuz ve hemen SQL yazmaya başlıyorsunuz.
Peki DuckDB'yi ne zaman seçmeliyiz? Bunu netleştirmek için diğer popüler seçeneklerle kıyaslayalım.
| Özellik / Feature | SQLite | PostgreSQL | DuckDB |
|---|---|---|---|
| Mimari | In-process | Sunucu (server) | In-process |
| Odak | İşlemsel (OLTP) | Karma | Analitik (OLAP) |
| Depolama | Satır (row) | Satır | Sütun (columnar) |
| Parquet desteği | Hayır | Eklenti ile | Yerleşik (native) |
Kısacası: hızlı yazma ve tekil kayıt işlemleri için SQLite, çok kullanıcılı üretim uygulamaları için PostgreSQL, büyük veri setlerinde hızlı analiz için ise DuckDB. PostgreSQL hakkında detaylı bilgiyi PostgreSQL 17 kurulum rehberimizde bulabilirsiniz. Bu seçenekler birbirinin rakibi değil; çoğu zaman bir arada kullanılır.
DuckDB'yi kurmak gerçekten dakika sürmez. İhtiyacınıza göre CLI, Python ya da Node.js sürümünü seçebilirsiniz.
# Linux / macOS: curl https://install.duckdb.org | sh # Calistir: duckdb
# Python (pip ile): pip install duckdb # uv ile (onerilen): uv add duckdb # Node.js: npm install @duckdb/node-api
CLI'da duckdb yazıp komut istemini gördüyseniz hazırsınız. Bellekte (in-memory) çalışmak için parametresiz başlatmanız yeterli; kalıcı bir dosya için duckdb veri.db kullanın.
DuckDB'nin en etkileyici yanı, dosyaları içeri aktarmaya (import) gerek kalmadan doğrudan sorgulayabilmesi. Yani elinizde bir CSV ya da Parquet varsa, üzerinde anında SQL çalıştırabilirsiniz.
-- CSV dosyasini dogrudan sorgula: SELECT sehir, COUNT(*) AS adet FROM 'satislar.csv' GROUP BY sehir ORDER BY adet DESC; -- Parquet dosyasi (cok daha hizli): SELECT AVG(tutar) FROM 'siparisler.parquet' WHERE yil = 2026; -- Birden fazla dosyayi birlestir (glob): SELECT * FROM 'logs/2026-*.parquet';
Burada dikkat ettiyseniz, hiçbir CREATE TABLE ya da IMPORT komutu yazmadık. DuckDB dosyayı yerinde okuyor (read in place). Bu, devasa Parquet dosyalarında bile belleği şişirmeden çalışmanızı sağlıyor. Alesta Web uzmanları olarak günlük log analizlerinde tam olarak bu yaklaşımı kullanıyoruz.
DuckDB, Python veri ekosistemiyle harika uyum sağlıyor. pandas DataFrame'lerini doğrudan SQL ile sorgulayabilir, sonucu yine DataFrame olarak alabilirsiniz. Bu, pandas'ın bazı yavaş kaldığı toplulaştırma işlemleri için müthiş bir hızlanma sağlar.
import duckdb
import pandas as pd
df = pd.read_csv("musteriler.csv")
# pandas DataFrame'i dogrudan SQL ile sorgula:
sonuc = duckdb.sql("""
SELECT ulke, COUNT(*) AS musteri_sayisi
FROM df
GROUP BY ulke
ORDER BY musteri_sayisi DESC
LIMIT 10
""").df()
print(sonuc)
DuckDB; pandas, Polars ve Apache Arrow ile sıfır kopya (zero-copy) veri paylaşabilir. Yani veriyi sürekli formattan formata dönüştürmek zorunda kalmazsınız. Bu da büyük veri setlerinde hem zaman hem bellek tasarrufu demek.
DuckDB 2026'da hızla olgunlaştı. İşte öne çıkan sürümler ve getirdikleri:
Özellikle Iceberg yazma desteği, DuckDB'yi modern veri gölü (data lakehouse) mimarilerinde ciddi bir oyuncu haline getirdi. Veritabanı yenilikleri konusunda MongoDB 8.0 yenilikleri rehberimize de göz atmanızı öneririz.
DuckDB'den en iyi verimi almak için pratik önerilerimiz:
SELECT * yerine ihtiyacınız olan sütunları belirtin; columnar mimaride bu büyük fark yaratır.SET memory_limit='4GB'; ile kaynak kullanımını kontrol altında tutun.DuckDB tek yazıcı (single writer) modeliyle çalışır; yani aynı anda çok sayıda kullanıcının yazdığı bir üretim uygulaması için PostgreSQL daha uygundur. DuckDB'nin gücü analiz, raporlama ve ETL süreçlerinde ortaya çıkar.
Bu makaledeki bilgiler aşağıdaki kaynaklardan derlenmiş ve Alesta Web tarafından test edilmiştir:
DuckDB, veri analizini herkes için erişilebilir kıldı. Kurulum derdi yok, sunucu yok, sadece hızlı ve güçlü SQL. CSV ve Parquet dosyalarınızı doğrudan sorgulayabilir, Python ile kusursuz entegre edebilirsiniz. Alesta Web olarak analitik ve raporlama ihtiyaçlarınız için DuckDB'yi gönül rahatlığıyla öneriyoruz.
Hızlı Özet / Quick Summary:
Faydalı Bağlantılar / Useful Links:
DuckDB ve veri analizi hakkında sorularınız için Alesta Web ekibine yazabilirsiniz.
© 2026 Alesta Web - Tüm hakları saklıdır.