প্রকল্প সম্পর্কে
duckbridge হলো একটি Trino কানেক্টর প্লাগইন যা আপনাকে DuckDB ডেটাবেসের বিরুদ্ধে SQL কুয়েরি চালানোর সুযোগ দেয় – তা এমবেডেড ফাইল হোক বা Quack RPC প্রোটোকল ব্যবহারকারী রিমোট সার্ভার হোক। এটি প্রজেকশন, ডোমেইন প্রেডিকেট, LIMIT/ORDER BY … LIMIT এবং বিস্তৃত স্কেলার ফাংশনগুলোর পুশডাউন সমর্থন করে। সাধারণ JDBC-ভিত্তিক কানেক্টরের বিপরীতে, duckbridge সমর্থিত অপারেশনগুলোকে Trino-তে ডেটা টেনে আনার পরিবর্তে সরাসরি DuckDB-তে পুশ করে এবং এটি নিশ্চিত করে যে DuckDB এবং Trino-র এক্সপ্রেশন মূল্যায়ন (NULLs, Unicode এবং date/time zone নিয়মসহ) অভিন্ন। এই কানেক্টরটি কোঅর্ডিনেটর এবং ওয়ার্কারদের ডেপ্লয়মেন্টের জন্য একটি স্ট্যান্ডার্ড Trino প্লাগইন হিসেবে প্যাকেজ করা হয়েছে।
**মূল বৈশিষ্ট্যসমূহ:**
- **কানেক্টিভিটি:** JDBC (`jdbc:duckdb:`) এর মাধ্যমে এমবেডেড DuckDB অথবা Quack প্রোটোকলের (`jdbc:quack://`) মাধ্যমে রিমোট DuckDB। রিমোট সার্ভারগুলোতে কেবল `CALL quack_serve(…)` রান করলেই চলে; কানেক্টর-সাইডে কোনো ইনস্টলেশনের প্রয়োজন নেই।
- **পুশডাউন:** প্রজেকশন এবং প্রেডিকেট পুশডাউন সবসময় সক্রিয় থাকে। LIMIT, TopN এবং স্কেলার ফাংশনের একটি বিশাল ক্যাটালগ নেটিভ DuckDB SQL হিসেবে পুশ করা হয়। কিছু নির্দিষ্ট ফাংশন (যেমন ICU case folding, crypto hashes) যা DuckDB নেটিভলি সমর্থন করে না, সেগুলো ঐচ্ছিক `trino_parity` DuckDB এক্সটেনশনের মাধ্যমে পরিচালিত হয়।
- **স্ট্রিং পুশডাউন মোড:** একটি কনফিগারযোগ্য ডায়ালের মাধ্যমে স্ট্রিং প্রেডিকেট কীভাবে হ্যান্ডেল করা হবে তা নিয়ন্ত্রণ করা যায় – কোনো পুশডাউন না থাকা (`NULL_ONLY`) থেকে শুরু করে রানটাইম ভেরিফিকেশনসহ পূর্ণ পুশডাউন (`PARITY`) পর্যন্ত। ডিফল্ট `PARITY` মোড প্রথম কানেকশনের সময় DuckDB-র বাইনারি কোলেশন এবং এক্সটেনশনের প্রাপ্যতা যাচাই করে এবং কোনো অমিল পাওয়া গেলে ত্রুটি প্রদর্শন করে।
- **এক্সটেনশন:** `trino_parity` এক্সটেনশনটি DuckDB-র community-extensions রিপোজিটরিতে প্রকাশিত হয়েছে। এমবেডেড মোডের জন্য সাইন করা লিনাক্স বাইনারি রিলিজের সাথে যুক্ত থাকে; অন্যান্য প্ল্যাটফর্মে এটি একবার ইনস্টল করা যায় অথবা `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-কম্প্যাটিবল ভেরিয়েন্ট।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.