- DuckDB dapat berfungsi seperti database meskipun data sebenarnya tidak disimpan secara internal di dalam database
- Data disimpan di penyimpanan terpisah, dan database bekerja dengan cara mereferensikannya
- File database tidak berisi data aktual, melainkan hanya instruksi tentang cara memproses data
Contoh: layanan robotaxi
- Penjelasan situasi: Dalam layanan robotaxi, ada kebutuhan untuk membagikan data yang dihasilkan setiap hari kepada para analis.
- Masalah: Datanya terlalu besar untuk dikirim lewat email, dan membagikannya lewat tautan juga rumit.
- Solusi: Gunakan DuckDB untuk membuat file database lalu membagikannya.
# 데이터베이스 생성
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()
- Hasil: File
weird_rides.db tidak memuat data aktual, tetapi berisi instruksi tentang cara memproses data.
- Cara berbagi: Unggah file ini ke blob storage lalu bagikan tautannya.
Akses data
- Koneksi database: Penerima memulai sesi DuckDB lokal lalu terhubung ke file database yang dibagikan.
# 데이터베이스 연결
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")
- Unduh data: Saat kueri dijalankan, hanya data yang diperlukan yang diunduh dari S3.
- Pemrosesan data yang efisien: Hanya kolom yang diperlukan yang dibaca, dan filter diterapkan untuk menyingkirkan data yang tidak perlu.
Kelebihan DuckDB
- Tahan terhadap perubahan: Meski format data, strategi partisi, atau skema berubah, cara penerima mengakses data tetap tidak berubah.
- Browser data cloud: Dengan DuckDB, dataset relasional bisa diakses dengan mudah melalui hyperlink.
2 komentar
Oh, kalau di data besar hanya ada katalog data kecil dan path yang akurat, mungkin bisa sedikit menghemat resource server juga ya, hehe
Opini Hacker News
DuckDB dan duckdb-wasm digunakan untuk menangani lembar respons dari SaaS pembuat formulir secara efisien: data respons disimpan di S3, lalu di sisi klien di-query ke DB lokal melalui duckdb-wasm untuk mengoptimalkan penggunaan jaringan dan memori.
Pengenalan MotherDuck: data warehouse DuckDB terkelola tanpa server, yang menyediakan clone tanpa salin, secure sharing, mode hibrida dengan data cloud, dan lainnya.
Mengintegrasikan DuckDB ke editor SQL qStudio: mendukung join dengan berbagai database, dan direkomendasikan sebagai IDE yang bagus untuk mulai memakai DuckDB.
Usulan penyediaan data melalui tautan S3: mempertanyakan nilai database dan view perantara, serta berargumen bahwa akan lebih efisien jika analis data menangani data mentah secara langsung.
Pengenalan Data Tap: solusi yang menyematkan DuckDB ke fungsi Lambda dan menyimpan data ke S3 dalam format Parquet, dengan penekanan pada efisiensi biaya dan skalabilitas.
Kebingungan tentang pendekatan akses data: dijelaskan bahwa data engineer cenderung menghindari pra-agregasi, sementara analis data cenderung lebih menyukai akses ke data mentah.
Tanggapan terhadap klaim bahwa sebagian besar database tidak berisi data: menganggap klaim tersebut berlebihan.
Usulan cara mengirim kueri SQL lewat email kepada rekan kerja: mempertanyakan kelebihan file database biner.
Keraguan tentang kegunaan alat SQL baru: merasa bahwa menyimpan data di data warehouse permanen dan membuat view yang diperlukan adalah pendekatan yang lebih tepat.
Kemiripan dengan Presto/Trino: ada pendapat bahwa pendekatan DuckDB terasa mirip dengan Presto/Trino.