Veri bilimi ve analitiği alanında, verilerden içgörü çıkarmak genellikle pandas gibi kütüphaneler kullanılarak Python’da yürütülen bir dizi adımdan oluşur. Güçlü olsa da, pandas büyük veri kümeleri ve kaynak yoğun işlemlerde performans sorunları yaşayabilir.
Sağlam işlevsellik ile verimlilik arasında denge arayanlar için DuckDB mükemmel bir alternatif olarak öne çıkıyor. Yüksek hızlı, kullanıcı dostu bir analitik veritabanı olan DuckDB, Python ve R’de veri işlemeyi dönüştürüyor.
Bu makalede şunları ele alacağız:
- DuckDB’nin benzersiz özellikleri ve yetenekleri
- Geleneksel veri işleme araçlarına kıyasla DuckDB’nin avantajları
- DuckDB’nin potansiyelini gösteren pratik kullanım örnekleri
- Python ve R’de DuckDB ile çalışma yönergeleri
Makalenin sonunda, veri boyutu ve işlemlerin karmaşıklığı ne olursa olsun, DuckDB’nin veri analizi görevleriniz için neden değerlendirmeye değer bir araç olduğunu anlayacaksınız.
DuckDB nedir?
DuckDB, ücretsiz, açık kaynaklı, gömülü, süreç içi, ilişkisel, Çevrimiçi Analitik İşleme (OLAP) Veri Tabanı Yönetim Sistemi (DBMS)’dir. Çok sayıda terim ve kısaltma var; gelin parçalarına ayıralım:
- Süreç içi ile, uygulamanızın bağlandığı harici bir süreç yerine, erişmek istediğiniz uygulamanın içinden DBMS özelliklerinin çalıştırılmasını kastediyoruz
- OLAP, veritabanının veri analizi için tasarlandığı anlamına gelir. Ayrıca büyük işlem verilerini yönetmek üzere tasarlanmış Çevrimiçi İşlem İşleme (OLTP) veritabanları da vardır.
OLAP ile OLTP arasındaki temel fark, verinin nasıl saklandığıdır. OLTP veritabanları genellikle verileri kayıtlara göre saklar ve bir kayda ait tüm verilerin bellekte birbirine yakın tutulmasını sağlar. Satırları verimli okuyup yazmak için de optimize edilmiştir.
Buna karşılık, OLAP veritabanları çoğunlukla sütun odaklıdır; yani veriler sütunlara göre düzenlenir. Bir sütunla ilişkili tüm veriler bellekte birbirine yakın saklanır ve veritabanı sütunları verimli okumak ve üzerinde hesaplama yapmak için optimize edilmiştir.
DuckDB bir OLAP veritabanı olduğundan, saklanan tüm veriler sütunlara göre düzenlenir. Ayrıca DuckDB, veriler üzerinde karmaşık sorgular (join, toplamalar, gruplaymalar vb.) gerçekleştirmek üzere optimize edilmiştir – daha fazlası için SQL Fundamentals beceri yoluna göz atın.
SQLite’a aşinaysanız, DuckDB’yi en kolay şu şekilde düşünebilirsiniz: analitik odaklı bir muadili. DuckDB’nin bu kadar popüler olmasının nedeni de burada yatıyor — yerel bilgisayarınızda SQLite’ın sadeliğini ve Snowflake’in işlevlerini bir araya getiriyor. DuckDB, analitik işlemeye yönelik gömülü bir veritabanı çözümü ihtiyacını karşılıyor.
DuckDB’nin Temel Özellikleri
DuckDB’nin bazı temel özelliklerine göz atalım.
Hızlı analitik sorgular
DuckDB inanılmaz derecede hızlıdır; bu durum, PostgreSQL gibi OLAP iş yüklerini yöneten veritabanlarına aşina olanlar için şaşırtıcı olabilir. Geleneksel olarak, OLAP veritabanlarının yanıt süreleri yavaştır çünkü genellikle daha fazla veri işlerler.
Bununla birlikte DuckDB, CPU önbelleğini verimli kullanmaya yardımcı olan ve analitik sorgu iş yükleri için yanıt sürelerini hızlandıran sütunlu-vektörleştirilmiş bir sorgu motoru üzerinde çalışır.
SQL desteği ve diğer programlama dilleriyle entegrasyon
DuckDB, kullanıcıların karmaşık SQL sorguları çalıştırmasını sağlar ve Java, C, C++ ve daha fazlası için API’ler sunar. Python ve R ile derin entegrasyona sahiptir; bu sayede kullanıcılar verimli, etkileşimli veri analizi yapabilir ve tercih ettikleri programlama dilinden DuckDB ile etkileşime geçebilir. Ayrıca EXCLUDE, REPLACE ve ALL gibi SQL sorgularını yazmayı kolaylaştıran ek SQL anahtar sözcüklerine de erişim vardır.
Not: DuckDB’nin harici bağımlılığı yoktur; bu yüzden bağımlılık sorunları hakkında endişelenmenize gerek kalmaz.
Ücretsiz ve açık kaynak
DuckDB açık kaynaklıdır ve birçok aktif katkıda bulunanı vardır; bu da geliştirme ve iyileştirmelerin hızlıca uygulanabileceği anlamına gelir. Ücretsizdir; ancak her zaman ücretsiz kalmayabilir.
DuckDB Kullanım Senaryuları
DuckDB için en yaygın iki kullanım senaryosu etkileşimli veri analizi ve edge bilişimdir.
Şimdi her birini sırayla inceleyelim.
Etkileşimli veri analizi
Veri analizi, verileri işleme ve modelleme adımlarının tümünü ifade eder. Veri analizinin amacı, sonuçları ve veri odaklı kararları bilgilendirecek faydalı bilgileri ortaya çıkarmaktır.
Günümüzde şirketler, analizlerini yürütmek için Python ve R gibi teknolojileri kullanan veri bilimcileri ve analistler istihdam etmektedir.
DuckDB, yerel geliştirmelerinde SQL kullanmayı tercih edenler için, veri analitiği işlevlerinin eksikliği nedeniyle OLAP iş yüklerini yönetmekte zorlanan SQLite’a kıyasla daha iyi bir alternatiftir.
Edge bilişim
DuckDB gibi gömülebilir veritabanları, kullanıcıların verileri edge’de analiz etmesini sağlar. Edge bilişim, farklı ağların ve cihazların gereksinimin bulunduğu noktaya ya da ona daha yakın konuma getirildiği, yükselen bir dağıtık bilişim paradigmasını ifade eder.
Veriyi ihtiyaç duyulan yere daha yakın işlemek, yanıt sürelerini iyileştirir ve bant genişliğinin korunmasını sağlar.
DuckDB ile Başlarken
DuckDB’yi yüklemek için gereken adımlar ortamınıza bağlıdır; ancak kurulumun tamamına yönelik kılavuz DuckDB dokümantasyonunda bulunabilir.
Genel olarak oldukça basittir. DuckDB gömülü bir çözüm olduğundan yalnızca birkaç satır koda ihtiyaç duyarsınız. Sunucu gerektirmez ve harici bağımlılığı yoktur.
İşte Python kullanarak DuckDB’yi nasıl kuracağımıza dair bir örnek:
pip install duckdb==0.8.0
R’de ise:
install.packages("duckdb")
Şimdi bazı kod örneklerine bakalım.
Python’da DuckDB ile Çalışma
DuckDB’yi kurduktan sonra başlamak oldukça kolaydır. Ortamınıza yalnızca import duckdb eklersiniz, ardından mevcut bir veritabanına bağlanır veya gerekirse yeni bir tane oluşturursunuz.
Örneğin:
import duckdb
connection = duckdb.connect()
connect() metoduna parametre olarak bir veritabanı dosyası verilmediği için yeni bir veritabanı oluşturulacaktır.
Bununla birlikte, DuckDB ile SQL sorguları yürütmeye başlamanın en basit yolu sql() metodunu kullanmaktır.
# Source: Basic API usage - https://duckdb.org/docs/api/python/overview.html
import duckdb
duckdb.sql('SELECT 42').show()
Bu komutu çalıştırmak, Python modülünde küresel olarak saklanan bir bellek içi veritabanı üzerinde çalışır ve esasen sorgunun sembolik bir temsili olan bir ilişki (relation) döndürür.
Dikkat: Sonuç açıkça istenene kadar sorgu yürütülmez; örneğin şöyle:
# Source: Execute SQL - https://duckdb.org/docs/guides/python/execute_sql.html
results = duckdb.sql('SELECT 42').fetchall()
print(results)
"""
[(42,)]
"""
Ayrıca veriyi bir Pandas DataFrame’e dönüştürmek için df() metodunu kullanabiliriz:
results_df = duckdb.sql('SELECT 42').df()
print(results)
"""
42
0 42
"""
Ya da veriyi belleğe okumak için çok sayıdaki veri alım yönteminden birini kullanabilirsiniz:
# Source: Python API - https://duckdb.org/docs/api/python/overview.html
import duckdb
duckdb.read_csv('example.csv') # read a CSV file into a Relation
duckdb.read_parquet('example.parquet')# read a Parquet file into a Relation
duckdb.read_json('example.json') # read a JSON file into a Relation
duckdb.sql('SELECT * FROM "example.csv"') # directly query a CSV file
Sorumluluk Reddi: sql() metodunu mevcut bir veritabanına bağlanmadan kullanırsanız, dosyalara depoladığınız tüm veriler program kapatıldıktan sonra kaybolacaktır. Bunu, bölümün başında ele aldığımız connect() metodunu kullanarak bir bağlantı kurarak önleyebilirsiniz.
Sonuç ve Ek Kaynaklar
DuckDB, veri bilimciler ve analistler gibi veri profesyonellerinin verileri hızlı ve verimli şekilde analiz etmek için kullandığı bir OLAP veritabanıdır. Büyük veri kümeleri üzerinde karmaşık sorguları çalıştırabilen bir SQL sorgu yürütme motorundan yararlanır.
DuckDB ayrıca birçok diğer programlama diliyle entegrasyonlara sahiptir; dolayısıyla favori dilinizden erişmek mümkündür.
Öğrenmeye devam etmek için SQL Temelleri Hızlı Başvuru Kartına ve DuckDB’nin DataLab’de SQL’i birinci sınıf vatandaş haline nasıl getirdiğine göz atın.

