इस प्रोजेक्ट के बारे में

duckbridge एक Trino कनेक्टर प्लगइन है जो आपको DuckDB डेटाबेस (चाहे वे एम्बेडेड फाइलें हों या Quack RPC प्रोटोकॉल बोलने वाले रिमोट सर्वर) के खिलाफ SQL क्वेरी चलाने की अनुमति देता है। यह प्रोजेक्शन, डोमेन प्रेडिकेट्स, LIMIT/ORDER BY … LIMIT और स्केलर फंक्शन्स की एक विस्तृत श्रृंखला के पुशडाउन का समर्थन करता है। विशिष्ट JDBC-आधारित कनेक्टर्स के विपरीत, duckbridge समर्थित ऑपरेशन्स को Trino में डेटा खींचने के बजाय DuckDB में पुश करता है, और यह सत्यापित करके शुद्धता सुनिश्चित करता है कि DuckDB एक्सप्रेशन्स का मूल्यांकन Trino के समान ही करता है (जिसमें NULLs, Unicode और डेट/टाइम ज़ोन नियम शामिल हैं)। इस कनेक्टर को कोऑर्डिनेटर और वर्कर्स पर परिनियोजन के लिए एक मानक Trino प्लगइन के रूप में पैकेज किया गया है। **मुख्य विशेषताएं:** - **कनेक्टिविटी:** JDBC (`jdbc:duckdb:`) के माध्यम से एम्बेडेड DuckDB या Quack प्रोटोकॉल (`jdbc:quack://`) के माध्यम से रिमोट DuckDB। रिमोट सर्वर बस `CALL quack_serve(…)` चलाते हैं; कनेक्टर-साइड इंस्टॉलेशन की आवश्यकता नहीं है। - **पुशडाउन:** प्रोजेक्शन और प्रेडिकेट पुशडाउन हमेशा चालू रहते हैं। LIMIT, TopN और स्केलर फंक्शन्स का एक बड़ा कैटलॉग नेटिव DuckDB SQL के रूप में पुश किए जाते हैं। फंक्शन्स का एक छोटा सेट (जैसे ICU केस फोल्डिंग, क्रिप्टो हैश) जिन्हें DuckDB नेटिव रूप से मैच नहीं कर सकता, उन्हें वैकल्पिक `trino_parity` DuckDB एक्सटेंशन द्वारा समर्थित किया जाता है। - **स्ट्रिंग पुशडाउन मोड:** एक कॉन्फ़िगर करने योग्य डायल यह नियंत्रित करता है कि स्ट्रिंग प्रेडिकेट्स को कैसे हैंडल किया जाए - बिना पुशडाउन (`NULL_ONLY`) से लेकर रनटाइम सत्यापन के साथ पूर्ण पुशडाउन (`PARITY`) तक। डिफ़ॉल्ट `PARITY` मोड पहले कनेक्शन पर DuckDB के बाइनरी कोलेशन और एक्सटेंशन उपलब्धता की जांच करता है, और विचलन पाए जाने पर त्रुटि देता है। - **एक्सटेंशन:** `trino_parity` एक्सटेंशन DuckDB के community-extensions रिपॉजिटरी पर प्रकाशित है। एम्बेडेड मोड के लिए, हस्ताक्षरित Linux बाइनरी रिलीज़ में बंडल किए गए हैं; अन्य प्लेटफार्मों पर, आप इसे एक बार इंस्टॉल कर सकते हैं या `GUARDED` मोड में चला सकते हैं। रिमोट सर्वर को स्टार्टअप पर एक्सटेंशन लोड करना होगा (या सर्वर-साइड पाथ प्रदान करना होगा)। - **वैकल्पिक डेटा स्कैनिंग:** Lance डेटासेट्स और Vortex फाइलों के लिए प्रयोगात्मक टेबल फंक्शन्स, जिसमें वेक्टर, फुल-टेक्स्ट और हाइब्रिड सर्च शामिल हैं, प्रति कैटलॉग सक्षम किए जा सकते हैं। - **डायनामिक कैटलॉग प्रबंधन:** जब Trino का डायनामिक कैटलॉग प्रबंधन सक्षम होता है, तो `CREATE CATALOG … USING duckbridge` के माध्यम से रनटाइम पर कैटलॉग बनाए जा सकते हैं। - **टाइप मैपिंग:** UUID, `TIMESTAMPTZ`, `UBIGINT` (as `DECIMAL(20,0)`) और `VARBINARY` सहित DuckDB प्रकारों के लिए लॉसलेस मैपिंग। `HUGEINT` जैसे असमर्थित प्रकारों को अस्वीकार कर दिया जाता है। Duckbridge को Trino 483 के लिए बनाया गया है और इसमें DuckDB 1.5.5 एम्बेडेड है। प्रोजेक्ट में सीधे डेटा ट्रांसफर के लिए एक प्रयोगात्मक Arrow-आधारित कॉलमर इंजन शामिल है, और भविष्य की योजनाओं में एग्रीगेट पुशडाउन और एक Doris-संगत वेरिएंट शामिल है।