Мэдээ

DuckDB v2.0 “Cyanoptera” урьдчилсан хувилбар гарлаа: Client/Server горим, Triggers болон 40 дахин хурдан I/O

TOGTOKHTOGTOKH·2026 оны наймдугаар сарын 23·2 үзсэн·
DuckDB v2.0 “Cyanoptera” урьдчилсан хувилбар гарлаа: Client/Server горим, Triggers болон 40 дахин хурдан I/O

Дата инженерчлэл болон аналитикийн экосистемд "SQLite-ийн аналитик хувилбар" хэмээн алдаршсан нээлттэй эхийн DuckDB төсөл томоохон үсрэлт хийж байна. Тус баг 10,000 гаруй коммит хийгдсэн DuckDB v2.0 (код нэр: Cyanoptera) хувилбарынхаа дэлгэрэнгүй урьдчилсан мэдээллийг албан ёсоор танилцууллаа.

Энэхүү шинэчлэл нь DuckDB-ийг зөвхөн нэг процесс дотор (in-process) ажилладаг жижиг номын сан байхаас бүрэн хэмжээний бие даасан аналитик өгөгдлийн платформын түвшинд аваачиж байна.


1. Хамгийн том хувьсал: Quack протокол ба Client/Server горим

DuckDB-ийн хамгийн том давуу тал нь серверийн тохиргоо шаардлагагүй, процесс дотроо (in-memory/embedded) хурдан ажилладаг явдал байсан ч олон хэрэглэгч, олон микросервисээс нэг өгөгдлийн файлд зэрэг хандах үед файлын түгжээ (file lock) үүсэх нь гол хязгаарлалт болдог байв.

DuckDB 2.0 нь уг асуудлыг Quack extension болон шинэ клиент-сервер горимоор шийдвэрлэж байна:

  • Төвлөрсөн аналитик сервер: Одоо DuckDB нь бие даасан сервер хэлбэрээр ажиллаж, алсын зайнаас (remote) олон клиент нэгэн зэрэг холбогдон аналитик query илгээх боломжтой боллоо.
  • CONNECT команд ба Remote Pushdown: Шинээр нэмэгдсэн CONNECT синтаксын тусламжтайгаар PostgreSQL, MySQL болон бусад гаднын өгөгдлийн сангууд руу шууд холбогдож, тооцооллыг тухайн сангийн сервер рүү pushdown хийх архитектур улам төгөлдөржжээ.

Энэ нь бага хэмжээний дата багуудад Snowflake, BigQuery гэх мэт үнэтэй үүлэн шийдэл ашиглахгүйгээр дотоод сүлжээндээ DuckDB-ээр төвлөрсөн Data Warehouse босгох боломжийг олгож байна.


2. Asynchronous I/O: 40 дахин хүртэл хурдны өсөлт

Өгөгдөл боловсруулалт (CPU compute) болон диск эсвэл S3 зэрэг алсын сангаас өгөгдөл унших хэсгийг тусгаарласан Asynchronous I/O архитектурыг нэвтрүүлжээ.

Өмнө нь DuckDB өгөгдөл унших явцад зарим I/O үйлдлүүд хүлээгдэх (blocking) сул талтай байсан бол одоо background thread-үүдээр өгөгдлийг урьдчилан татаж бэлдэнэ. Туршилтын үр дүнгээс харахад:

  • Сүлжээний өндөр сааталтай (latency) үүлэн хадгалах систем дээрх Lakehouse файлууд (Parquet, Iceberg) дээр ажиллах хурд үлэмж нэмэгдсэн.
  • Рекурсив CTE (Common Table Expressions) тооцоолол дээр 40 дахин хүртэл хурдан гүйцэтгэл үзүүлж байна.

3. Semi-Structured өгөгдөлд зориулсан VARIANT төрөл

JSON болон динамик бүтэцтэй хагас бүтэцлэгдсэн өгөгдлийг боловсруулахад зориулж нэгдүгээр зэрэглэлийн VARIANT өгөгдлийн төрөл орж ирлээ.

Snowflake-ийн түгээмэл шийдэлтэй адил DuckDB нь VARIANT доторх утгуудыг баганан (columnar shredding) байдлаар задалж хадгална. Үүний үр дүнд схем нь тодорхойгүй эсвэл үргэлж хувьсан өөрчлөгддөг JSON лог, эвэнтүүдийг унших үед бүхэл бүтэн JSON-ийг задлах (parse хийх) шаардлагагүй болж, баганын түвшинд шууд шүүлтүүр (predicate pushdown) ажиллах юм. Мөн JSON өгөгдлийг өөрчлөх (mutation) тусгай функцууд нэмэгджээ.


4. Full Triggers ба Шинэ хадгалалтын формат

  • Triggers: Өгөгдөл өөрчлөгдөх үед (INSERT, UPDATE, DELETE) автомат үйлдэл ажиллуулах, өгөгдлийн бүрэн бүтэн байдлыг (data integrity) хангах Triggers-ийг бүрэн дэмждэг боллоо. Энэ нь DuckDB-ийг зөвхөн OLAP гэлтгүй тодорхой transactional үүрэг гүйцэтгэхэд дөхөм болгож байна.
  • Шинэ Storage Format: Өргөн (wide table) олон баганатай хүснэгтүүд болон том хэмжээний индексүүдэд зориулж диск дээрх файлын форматыг шинэчилснээр дискний хэмжээ багасаж, унших хурд сайжирчээ.

5. Postgres парсераас PEG суурьтай шинэ парсер луу

DuckDB нь анх PostgreSQL-ийн SQL дүрмийг сууриа болгон ашигладаг байсан. Харин 2.0 хувилбараас эхлэн тэд өөрсдийн гараар эхнээс нь бичсэн PEG (Parsing Expression Grammar) парсер луу бүрэн шилжиж байна:

  • Алдааны мэдэгдэл илүү тодорхой: Синтаксын алдаа хаана гарсныг илүү ойлгомжтой, нарийн зааж өгдөг болсон.
  • Шинэ синтакс: PostgreSQL-ийн олон жилийн түүхтэй хүнд дүрмүүдээс ангижирч, NEAREST joins, хувьсагчийн синтакс (variable syntax), CTE дотор DML ашиглах зэрэг шинэлэг функцуудыг өргөтгөх боломж бүрдэв.
  • Хөнгөн бөгөөд авсаархан: Хүнд жинтэй ICU санг хасаж, timezone болон collation-ийг бие даасан хөнгөн кодоор шийджээ.

Дүгнэлт: Хөгжүүлэгчдэд юу өөрчлөгдөх вэ?

DuckDB 2.0 нь өгөгдөлтэй ажилладаг инженерүүдийн хувьд тоглоомын дүрмийг дахин өөрчилж байна. Өмнө нь локал скрипт, Jupyter notebook, эсвэл dbt pipeline-аар хязгаарлагддаг байсан DuckDB одоо жижиг болон дунд хэмжээний системүүдэд зориулсан төвлөрсөн, маш бага зардалтай, өндөр хурдны аналитик backend болж чадахаар хөгжиж байна.

Nightly preview build-үүд нь туршилтад нээлттэй байгаа бөгөөд тогтвортой хувилбар энэ намар гарах төлөвтэй байна.

Эх сурвалж: DuckDB Official Blog — A Preview of DuckDB v2.0 (Cyanoptera)

Сэтгэгдэл

Ачаалж байна...