- DuckDB ऐसा डेटाबेस की तरह काम कर सकता है, भले ही वास्तविक डेटा उसके अंदरूनी डेटाबेस में स्टोर न हो
- डेटा अलग स्टोरेज में रखा जाता है, और डेटाबेस उसे refer करने के तरीके से काम करता है
- डेटाबेस फ़ाइल में वास्तविक डेटा शामिल नहीं होता, बल्कि केवल यह निर्देश होते हैं कि डेटा को कैसे प्रोसेस करना है
उदाहरण: रोबोटैक्सी सेवा
- स्थिति का विवरण: रोबोटैक्सी सेवा में हर दिन बनने वाले डेटा को analysts के साथ साझा करना है।
- समस्या: डेटा इतना बड़ा है कि उसे ईमेल से भेजना मुश्किल है, और लिंक से साझा करना भी जटिल है।
- समाधान: DuckDB का उपयोग करके एक डेटाबेस फ़ाइल बनाई जाती है और उसे साझा किया जाता है।
# 데이터베이스 생성
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()
- परिणाम:
weird_rides.db फ़ाइल में वास्तविक डेटा नहीं होता, लेकिन डेटा को कैसे प्रोसेस करना है इसके निर्देश होते हैं।
- साझा करने का तरीका: इस फ़ाइल को blob storage में अपलोड करके उसका लिंक साझा किया जाता है।
डेटा एक्सेस
- डेटाबेस से कनेक्ट करना: प्राप्तकर्ता एक local DuckDB session शुरू करता है और साझा की गई डेटाबेस फ़ाइल से कनेक्ट करता है।
# 데이터베이스 연결
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")
- डेटा डाउनलोड: query चलाते समय केवल ज़रूरी डेटा ही S3 से डाउनलोड किया जाता है।
- कुशल डेटा प्रोसेसिंग: केवल ज़रूरी columns पढ़े जाते हैं, और filters लगाकर अनावश्यक डेटा को बाहर रखा जाता है।
DuckDB के फ़ायदे
- बदलाव के प्रति मज़बूत: डेटा फ़ॉर्मैट, partitioning strategy, या schema बदलने पर भी प्राप्तकर्ता का डेटा एक्सेस करने का तरीका नहीं बदलता।
- डेटा cloud browser: DuckDB की मदद से relational datasets को hyperlinks के जरिए आसानी से एक्सेस किया जा सकता है।
2 टिप्पणियां
ओह, बड़े डेटा में अगर सिर्फ छोटे डेटा का कैटलॉग और सही path ही हो, तो शायद server resources भी थोड़ा बचाया जा सकता है, हाहा
Hacker News टिप्पणियाँ
DuckDB और duckdb-wasm का उपयोग करके form builder SaaS की response sheets को कुशलतापूर्वक प्रोसेस करना: response data को S3 में स्टोर किया जाता है, और client पर duckdb-wasm के जरिए local DB में query करके network और memory उपयोग को optimize किया जाता है.
MotherDuck का परिचय: एक serverless managed DuckDB data warehouse, जो zero-copy clone, secure sharing, और cloud data के साथ hybrid mode जैसी सुविधाएँ देता है.
DuckDB को qStudio SQL editor में integrate करना: यह विभिन्न databases के साथ join को support करता है, और DuckDB शुरू करने के लिए एक अच्छा IDE बताया गया है.
S3 links के जरिए data उपलब्ध कराने का प्रस्ताव: intermediate database और views के value पर सवाल उठाते हुए कहा गया है कि data analysts के लिए raw data को सीधे handle करना अधिक कुशल हो सकता है.
Data Tap का परिचय: Lambda functions में DuckDB embed करके data को S3 में Parquet format में स्टोर करने वाला solution, जो cost efficiency और scalability पर जोर देता है.
Data access approach को लेकर भ्रम: बताया गया है कि data engineers pre-aggregation से बचते हैं, जबकि data analysts raw data access को प्राथमिकता देते हैं.
इस दावे पर प्रतिक्रिया कि ज़्यादातर databases में data शामिल नहीं होता: इसे बढ़ा-चढ़ाकर कहा गया दावा माना गया है.
सहकर्मी को SQL queries ईमेल से भेजने के तरीके का सुझाव: binary database files के फायदों पर सवाल उठाया गया है.
नए SQL tools की उपयोगिता पर सवाल: माना गया है कि data को permanent data warehouse में स्टोर करके ज़रूरत के मुताबिक views बनाना अधिक उचित है.
Presto/Trino से समानता: राय है कि DuckDB का approach Presto/Trino जैसा लगता है.