- DuckDB, veriler gerçekte veritabanının içinde saklanmasa bile bir veritabanı gibi çalışabiliyor
- Veriler ayrı bir depoda tutuluyor ve veritabanı bunlara referans vererek çalışıyor
- Veritabanı dosyası gerçek veriyi içermiyor; yalnızca verinin nasıl işleneceğine dair talimatları içeriyor
Örnek: robotaksi hizmeti
- Durum açıklaması: Bir robotaksi hizmetinde her gün üretilen verilerin analistlerle paylaşılması gerekiyor.
- Sorun: Veri çok büyük olduğu için e-postayla göndermek zor, bağlantıyla paylaşmak da karmaşık.
- Çözüm: DuckDB kullanılarak bir veritabanı dosyası oluşturuluyor ve bu dosya paylaşılıyor.
# 데이터베이스 생성
import duckdb
db = duckdb.connect("weird_rides.db")
db.sql("""
CREATE VIEW weird_rides
AS SELECT pickup_at, dropoff_at, trip_distance, total_amount
FROM 's3://robotaxi-inc/daily-ride-data/*.parquet'
WHERE fare_amount > 100 AND trip_distance < 10.0
""")
db.close()
- Sonuç:
weird_rides.db dosyası gerçek veriyi içermiyor, ancak verinin nasıl işleneceğine dair talimatları içeriyor.
- Paylaşım yöntemi: Bu dosya blob depolamaya yükleniyor ve bağlantı paylaşılıyor.
Veriye erişim
- Veritabanına bağlanma: Alıcı, yerel bir DuckDB oturumu başlatıp paylaşılan veritabanı dosyasına bağlanıyor.
# 데이터베이스 연결
import duckdb
conn = duckdb.connect()
conn.sql("""
ATTACH 's3://robotaxi-inc/virtual-datasets/weird_rides.db'
AS rides_db (READ_ONLY)
""")
conn.sql("SELECT * FROM rides_db.weird_rides LIMIT 5")
- Veri indirme: Sorgu çalıştırıldığında yalnızca gereken veriler S3'ten indiriliyor.
- Verimli veri işleme: Yalnızca gerekli sütunlar okunuyor ve filtre uygulanarak gereksiz veriler dışarıda bırakılıyor.
DuckDB'nin avantajları
- Değişikliklere dayanıklı: Veri biçimi, partitioning stratejisi veya şema değişse bile alıcının veriye erişim yöntemi değişmiyor.
- Veri bulutu tarayıcısı: DuckDB sayesinde ilişkisel veri kümelerine hiperlinkler üzerinden kolayca erişilebiliyor.
2 yorum
Büyük veri içinde küçük verinin yalnızca kataloğu ve doğru yolu varsa, sunucu kaynaklarından biraz tasarruf etmek de mümkün olabilir sanırım haha
Hacker News görüşleri
DuckDB ve duckdb-wasm kullanarak form oluşturucu SaaS'ın yanıt sayfalarını verimli şekilde işleme: Yanıt verilerini S3'te depolayıp istemci tarafında duckdb-wasm ile yerel veritabanı olarak sorgulayarak ağ ve bellek kullanımını optimize ediyor.
MotherDuck tanıtımı: Sunucusuz yönetilen bir DuckDB veri ambarı; sıfır kopya klonlama, güvenli paylaşım ve bulut verileriyle hibrit mod gibi özellikler sunuyor.
DuckDB'yi qStudio SQL editörüne entegre etme: Çeşitli veritabanlarıyla join işlemlerini destekliyor ve DuckDB'ye başlamak için iyi bir IDE olarak öneriliyor.
S3 bağlantıları üzerinden veri sunma önerisi: Ara veritabanları ve görünümlerin değerini sorguluyor; veri analistlerinin ham veriyi doğrudan işlemesinin daha verimli olabileceğini savunuyor.
Data Tap tanıtımı: Lambda fonksiyonlarına DuckDB gömerek veriyi S3'e Parquet formatında kaydeden bir çözüm; maliyet verimliliği ve ölçeklenebilirliği vurguluyor.
Veri erişim yaklaşımına dair kafa karışıklığı: Veri mühendislerinin ön toplulaştırmadan kaçınma, veri analistlerinin ise ham veriye erişimi tercih etme eğiliminde olduğunu açıklıyor.
Çoğu veritabanının veri içermediği iddiasına tepki: Bu iddianın abartılı olduğunu düşünüyor.
SQL sorgularını iş arkadaşına e-postayla gönderme yöntemi önerisi: İkili veritabanı dosyalarının avantajlarını sorguluyor.
Yeni SQL araçlarının faydasına dair şüphe: Veriyi kalıcı bir veri ambarında tutup ihtiyaç duyulan görünümleri oluşturmanın daha uygun olduğunu düşünüyor.
Presto/Trino ile benzerlik: DuckDB'nin yaklaşımının Presto/Trino'ya benzediğini düşünen bir görüş.