DuckDB Labs پیش‌نمایش DuckDB v2.0 با کدنام «Cyanoptera» را منتشر کرد؛ نسخی با بیش از 10٬000 کامیت که تحولی اساسی در معماری این موتور تحلیلی متن‌باز به‌وجود می‌آورد. مهم‌ترین تغییرها شامل حالت بومی کلاینت/سرور، API نسخه‌بندی‌شده C، پشتیبانی کامل از نوع داده VARIANT و بهینه‌سازی‌هایی برای I/O روی S3 است.

  • حالت کلاینت/سرور بومی و پروتکل quack برای سرویس‌دهی شبکه‌ای
  • API نسخه‌بندی‌شده C و تضمین ABI برای افزونه‌ها
  • پشتیبانی تولیدی از VARIANT برای داده‌های نیمه‌ساخت‌یافته
  • بهینه‌سازی I/O غیهمزامن برای مخازن شی‌محور و فرمت ذخیره‌سازی v2.0

حالت کلاینت/سرور بومی و پروتکل quack در DuckDB v2.0

هستهٔ v2.0 حالت بومی کلاینت/سرور را معرفی می‌کند که از طریق افزونهٔ پروتکل quack و دستور SQL CONNECT فعال می‌شود. هر نمونه DuckDB می‌تواند به‌عنوان یک فرایند پس‌زمینه (daemon) اجرا شده و اتصالات شبکه‌ای را بپذیرد، بدون آنکه سادگی توکارِ یک باینری واحد از دست برود. این قابلیت اتصال به نقاط انتهایی راه دور DuckDB و موتورهای رابطه‌ای مانند PostgreSQL و MySQL را تسهیل می‌کند و از pushdown برای بهینه‌سازی کوئری‌ها بهره می‌برد.

CALL quack_serve(token = 'my_token');
ATTACH 'quack:server.example.com' AS qk (TOKEN 'my_token');
CONNECT qk;
SELECT count(*) FROM events;
DISCONNECT;

این لایه شبکه‌ای مبتنی بر کنترل همزمانی چندنسخه‌ای (MVCC) و ایزولاسیون تراکنشی چند-اتصالی طراحی شده و زیرسیستم مشاهده‌پذیری و متریک‌ها برای استقرارهای چندمستأجر و بلندمدت بازطراحی شده است.

API نسخه‌بندی‌شده C و تجربهٔ توسعه افزونه‌ها

v2.0 یک API نسخه‌بندی‌شده C معرفی می‌کند که با مشخصهٔ YAML همراه است و تضمین‌های پایداری ABI را ارائه می‌دهد. ایده این است که توسعه‌دهندگان نیازی به بازسازی افزونه‌ها برای هر انتشار جدید نداشته باشند. لایه‌های انتزاعی سطح‌بالای C++ و بایندینگ‌های Rust نیز در مسیر انتشار قرار گرفته‌اند تا فرآیند ساخت افزونه به‌صورت یک‌بار انجام و برای پچ‌ها و به‌روزرسانی‌های جزئی پایدار بماند.

SET allow_extension_repositories = 'allowed';
CREATE EXTENSION REPOSITORY private_repo FROM 'https://extensions.corp.internal';
INSTALL analytics_toolkit FROM private_repo;
LOAD private_repo/analytics_toolkit;

پشتیبانی تولیدی از VARIANT و داده‌های نیمه‌ساخت‌یافته

نوع داده VARIANT اکنون در سطح تولیدی قرار دارد. DuckDB الگوهای نیمه‌ساخت‌یافته را شناسایی می‌کند و payloadهای مشابه JSON را از دیسک تا فرمت‌های ستونی مانند Parquet به نمایش‌های ستونی خرد می‌کند؛ این رویکرد امکان اسکن فیلدهای تو‌در‌تو بدون نیاز به اسکیماهای صریح را فراهم می‌سازد و کوئری روی داده‌های نیمه‌ساخت‌یافته را کارآمدتر می‌کند.

گرامر SQL جدید و امکانات توسعه‌پذیر

پارسر مبتنی بر PostgreSQL جای خود را به یک گرامر PEG سفارشی داده است که ثبت نحوهای SQL توسط افزونه‌ها و ارائهٔ موقعیت‌های دقیق منبع برای دیباگ را ممکن می‌سازد. افزوده‌های مهم شامل:

  • تریگرهای بومی BEFORE و AFTER با جدول‌های انتقال
  • JOIN شباهت APPROX NEAREST برای بارهای برداری
  • پشتیبانی از عبارات DML داخل CTEها

بهینه‌سازی عملکرد و فرمت ذخیره‌سازی v2.0

  • I/O غیهمزامن برای مخازن ابری شی‌محور مانند Amazon S3 که تأخیر و مقیاس‌پذیری را بهبود می‌بخشد.
  • برنامه‌ریزی کوئری آگاه از پارتیشن و فشرده‌سازی رشته با فرهنگ‌نامه‌های پیش‌فرض DICT_FSST.
  • فرمت ذخیره‌سازی v2.0 با بارگذاری تنبل متادیتای ستون و پاک‌سازی تدریجی نقطه‌چک برای اندیس‌های ART.
  • جایگزینی وابستگی ICU با زیرسیستمی بومی مبتنی بر IANA برای کاهش حجم باینری و تسریع تبدیل‌های زمانی.

واکنش جامعه و موارد کاربرد عملی

بحث‌ها در Hacker News و Reddit بازتاب‌دهندهٔ استقبال جامعهٔ توسعه‌دهندگان است. مهندسان ارزش اجرای بارهای تحلیلی بزرگ‌تر از حافظه (out-of-core) روی سخت‌افزار مصرفی و کاهش هزینه‌های زیرساخت ابری را برجسته کرده‌اند. موارد کاربرد عملی شامل:

  • داشبوردهای درون‌مرورگر با DuckDB-WASM و Parquet
  • سرویس‌دهی کوئری HTTP با I/O غیهمزامن
  • خطوط لولهٔ رویداد با تأخیر نزدیک به زمان واقعی

مخاطبان هدف و نکات استقرار

DuckDB v2.0 مناسب تیم‌های تحلیل داده، مهندسی داده و توسعه‌دهندگانی است که با فایل‌های Parquet یا منابع S3 کار می‌کنند و می‌خواهند از موتور ستونی سریع و API افزونهٔ پایدار بهره‌مند شوند بدون تکیه بر دیتابیس سرورِ سنگین. توجه داشته باشید که DuckDB همچنان برای بارهای OLTP جایگزین PostgreSQL نیست و نقش اصلی‌اش در حوزهٔ OLAP باقی می‌ماند.

  • نکتهٔ امنیتی: هنگام فعال‌سازی quack از توکن‌ها و مکانیزم‌های رمزنگاری مناسب استفاده کنید.
  • پذیرش تدریجی: ابتدا افزونه‌ها و مخازن داخلی را در محیط آزمایشی تست کنید و سپس در استقرار تولید اعمال نمایید.
  • مشاهده‌پذیری: از متریک‌ها و لاگ‌های بازطراحی‌شده برای نظارت بر استقرارهای چندمستأجر بهره ببرید.

برای مستندات رسمی، جزئیات پیاده‌سازی و دریافت باینری‌های پیش‌نمایش به صفحهٔ مستندات DuckDB مراجعه کنید.

جمع‌بندی

DuckDB v2.0 توازن میان سادگی یک پایگاه‌دادهٔ توکار و نیازهای عملیاتی سرویس‌های توزیع‌شده را برقرار می‌کند. این نسخه برای کسانی که به دنبال پردازش تحلیلی سریع، یکپارچه‌سازی شبکه‌ای و توسعه‌پذیری افزونه‌ای هستند، انتخاب جذابی محسوب می‌شود.