عن المشروع
duckbridge هو ملحق موصل Trino يتيح لك تشغيل استعلامات SQL مقابل قواعد بيانات DuckDB - سواء كانت ملفات مدمجة أو خوادم بعيدة تتحدث بروتوكول Quack RPC - مع دفع الإسقاطات (projections)، والمسندات النطاقية (domain predicates)، و LIMIT/ORDER BY … LIMIT، ومجموعة واسعة من الدوال القياسية. وعلى عكس الموصلات التقليدية القائمة على JDBC، يقوم duckbridge بدفع العمليات المدعومة إلى DuckDB بدلاً من سحب البيانات إلى Trino لتقييمها، ويضمن الصحة من خلال التحقق من أن DuckDB يقيم التعبيرات بشكل مطابق لـ Trino (بما في ذلك القيم NULL، وUnicode، وقواعد التاريخ والمنطقة الزمنية). يتم حزم الموصل كملحق Trino قياسي للنشر على المنسق (coordinator) والعاملين (workers).
**الميزات الرئيسية:**
- **الاتصال:** DuckDB مدمج عبر JDBC (`jdbc:duckdb:`) أو DuckDB بعيد عبر بروتوكول Quack (`jdbc:quack://`). تقوم الخوادم البعيدة ببساطة بتشغيل `CALL quack_serve(…)`؛ ولا يتطلب الأمر أي تثبيت من جانب الموصل.
- **الدفع (Pushdown):** دفع الإسقاطات والمسندات مفعل دائماً. يتم دفع LIMIT و TopN وكتالوج كبير من الدوال القياسية كـ DuckDB SQL أصلي. هناك مجموعة صغيرة من الدوال (مثل ICU case folding، وتشفيرات crypto hashes) التي لا يستطيع DuckDB مطابقتها أصلياً، وهي مدعومة بواسطة ملحق `trino_parity` الاختياري لـ DuckDB.
- **أوضاع دفع النصوص:** يتحكم قرص إعدادات قابل للتكوين في كيفية التعامل مع مسندات النصوص - من عدم الدفع (`NULL_ONLY`) إلى الدفع الكامل مع التحقق في وقت التشغيل (`PARITY`). يقوم وضع `PARITY` الافتراضي بفحص الترتيب الثنائي (binary collation) وتوفر الملحقات في DuckDB عند الاتصال الأول، ويفشل بوضوح إذا تم اكتشاف تباين.
- **الملحقات:** يتم نشر ملحق `trino_parity` في مستودع community-extensions الخاص بـ DuckDB. بالنسبة للوضع المدمج، يتم تضمين ملفات Linux الثنائية الموقعة في الإصدار؛ وفي المنصات الأخرى، يمكنك تثبيته مرة واحدة أو التشغيل في وضع `GUARDED`. يجب على الخوادم البعيدة تحميل الملحق عند بدء التشغيل (أو توفير مسار من جانب الخادم).
- **مسح البيانات الاختياري:** يمكن تفعيل دوال الجداول التجريبية لمجموعات بيانات Lance وملفات Vortex، بما في ذلك البحث المتجهي (vector)، والبحث في النص الكامل، والبحث الهجين، لكل كتالوج على حدة.
- **إدارة الكتالوج الديناميكية:** يمكن إنشاء الكتالوجات في وقت التشغيل عبر `CREATE CATALOG … USING duckbridge` عندما تكون إدارة الكتالوج الديناميكية في Trino مفعلة.
- **مطابقة الأنواع:** مطابقة بدون فقدان لأنواع DuckDB بما في ذلك UUID و `TIMESTAMPTZ` و `UBIGINT` (كـ `DECIMAL(20,0)`) و `VARBINARY`. يتم رفض الأنواع غير المدعومة مثل `HUGEINT`.
تم بناء Duckbridge لـ Trino 483 ويدمج DuckDB 1.5.5. يتضمن المشروع محركاً عمودياً تجريبياً قائماً على Arrow لنقل البيانات المباشر، وتشمل الخطط المستقبلية دفع التجميعات (aggregate pushdown) وإصداراً متوافقاً مع Doris.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.