Мэдээ

"SQLite-ийн аналитик хувилбар" DuckDB 2.0.0 LTS гарлаа: Сервер горим, триггер ба VARIANT төрөл

TOGTOKHTOGTOKH·2026 оны аравдугаар сарын 21·1 үзсэн·
"SQLite-ийн аналитик хувилбар" DuckDB 2.0.0 LTS гарлаа: Сервер горим, триггер ба VARIANT төрөл

Өгөгдлийн сангийн технологиуд дундаас сүүлийн жилүүдэд хөгжүүлэгчид болон дата инженерүүдийн хайрыг хамгийн их татсан нээлттэй эхийн төсөл бол гарцаагүй DuckDB билээ. Хэрэв SQLite нь транзакцийн (OLTP) даалгаварт зориулагдсан хөнгөн жинтэй in-process сан бол, DuckDB нь баганан (columnar) бүтэцтэй, асар хурдан аналитик (OLAP) боловсруулалт хийдэг стандарт болоод байсан юм.

Тэгвэл DuckDB баг өнөөдөр төслийнхөө түүхэн дэх хамгийн том шинэчлэл болох DuckDB 2.0.0 LTS (“Cinnamon Teal”) хувилбарыг албан ёсоор танилцууллаа. Хувилбар 1.5-аас хойш нийт 20,000 орчим commit хийгдэж бүтээгдсэн энэхүү хувилбар нь 2027 оны 10-р сар хүртэл урт хугацааны тогтвортой дэмжлэгтэй (LTS) байх бөгөөд зөвхөн сан биш, бүрэн хэмжээний аналитик платформ болон хувьсаж буйг харуулж байна.

DuckDB 2.0-д орсон хамгийн гол өөрчлөлтүүд болон архитектурын шинэчлэлүүдийг нарийвчлан сонирхоцгооё.


1. In-process хүрээнээс хальж "Quack" Сервер горимтой болов

DuckDB-ийн гол давуу тал нь PostgreSQL, ClickHouse шиг тусдаа daemon/server суулгах шаардлагагүй, Python script эсвэл Go binary дотор шууд ажилладаг явдал байсан. Гэвч багийн олон хэрэглэгч, микросервисүүд нэг DuckDB файл руу сүлжээгээр нэгэн зэрэг холбогдон хүсэлт явуулах үед энэ нь хязгаарлалт болдог байв.

DuckDB 2.0 энэ асуудлыг шийдэж, өөрийн суурь Quack протоколыг бүрэн тогтвортой (stable) түвшинд хүргэлээ:

  • Одоо DuckDB-ийг CALL quack_serve() коммандаар эсвэл CLI-ээс шууд -serve флагтай ажиллуулж, сүлжээний серверийн горимд шилжүүлж болно.
  • Өөр процессууд, олон хэрэглэгч сүлжээгээр холбогдон өгөгдөл унших, шинжлэх боломжтой болсон.
  • Анхдагч тохиргоогоор серверийг localhost дээр сонсдог тул гадны сүлжээнээс хандахын тулд TLS terminate хийх reverse proxy-ийн ард байрлуулахыг зөвлөж байна.

Энэхүү боломж нь бага оврын дата багуудад олон мянган долларын үнэтэй үүлэн датавэйрхаус ашиглахгүйгээр дундын аналитик хөдөлгүүр босгох боломжийг олгож байна.


2. Шинэ CONNECT комманд ба Remote Pushdown

DuckDB 2.0-д сүлжээгээр бусад өгөгдлийн сангуудтай харилцах зарчим цоо шинэ шатанд гарлаа. Шинээр нэмэгдсэн CONNECT комманд нь remote DuckDB instance төдийгүй PostgreSQL, MySQL зэрэг гадаад сангууд руу шууд холболт тогтоож чадна.

Хамгийн том дэвшил нь Remote Pushdown Optimizer юм. Урьд нь гадны өгөгдлийн сангаас SQL бичихэд бүх хүснэгтийн өгөгдлийг DuckDB сүлжээгээр татаж авч байж тооцооллоо хийдэг байсан бол одоо шүүлтүүр (WHERE), нэгтгэл (GROUP BY) зэрэг SQL коммандуудыг тухайн remote сервер рүү нь "түлхэж" (pushdown), зөвхөн эцсийн үр дүнг л сүлжээгээр татдаг болсон. Энэ нь сүлжээний ачаалал болон санах ойн зарцуулалтыг эрс багасгаж байна.


3. Хагас бүтэцлэгдсэн өгөгдөлд зориулсан VARIANT төрөл ба "Shredding"

Орчин үеийн аппликэйшнуудад JSON болон схемийн тодорхой бүтэцгүй өгөгдөл ихээр ашиглагддаг. Урьд нь JSON өгөгдлийг текст хэлбэрээр хадгалж, хайлт хийх бүрдээ парс хийдэг байсан нь асар их хугацаа шаарддаг байв.

DuckDB 2.0-д VARIANT өгөгдлийн төрөл бүрэн нэгтгэгдлээ:

  • Энэ төрөл нь мөр бүр өөр бүтэцтэй байж болох JSON-төрлийн өгөгдлийг хадгална.
  • Гэхдээ текстийн оронд автомат "shredding" (хэрчих/баганачлах) алгоритм ашиглан нийтлэг талбаруудыг дотроо тусдаа багана болгон задалж хадгалдаг.
  • Үр дүнд нь өгөгдлийн хэмжээ хэд дахин сайн шахагдаж, тухайн JSON-ийн гүнд байгаа талбараар aggregate хийхэд энгийн баганан өгөгдөл шиг асар өндөр хурдтайгаар ажилладаг болжээ.

4. Үүлэн тооцооллын хурдатгал: Async I/O

Amazon S3, Google Cloud Storage эсвэл Azure Blob Storage дээр байрлах Parquet болон CSV файлууд дээр шууд SQL хүсэлт ажиллуулах нь DuckDB-ийн гол хэрэглээний нэг юм.

2.0 хувилбарт Asynchronous I/O архитектурыг бүрэн хэрэгжүүлсэн байна:

  • Query гүйцэтгэгдэж байх хооронд файлын хэсгүүдийг арын урсгалд (background) олон сүлжээний хүсэлтээр зэрэгцүүлэн татаж авдаг болсон.
  • Анхны туршилтуудаар EC2 дээрх өндөр хүчин чадалтай (128-аас 192 vCPU бүхий) серверүүд дээр CPU-ийн ашиглалтыг 100% болгож, 1 тэрбум бичилтийг 10 минутын дотор харьцуулан нэгтгэж (record linkage) чадсан үр дүн гарчээ. Өмнөх хувилбаруудад 64 vCPU-ээс дээш үед сүлжээний I/O гацалт үүсдэг байсан нь бүрэн засагдсан байна.

5. Триггер, шинэ PEG Parser ба бусад сайжруулалтууд

  • SQL Triggers: CREATE TRIGGER синтакс албан ёсоор орж ирлээ. Хүснэгтэд өгөгдөл өөрчлөгдөхөөс өмнө болон дараа (BEFORE, AFTER) автоматаар тооцоолол хийх эсвэл аудит лог хөтлөх логикийг DuckDB өөрөө удирдах боломжтой болов.
  • Шинэ PEG-based SQL Parser: Хуучин парсерыг Parsing Expression Grammar (PEG) дээр суурилсан шинэ архитектураар сольсон байна. Ингэснээр SQL алдаа гарах үед яг хаана, ямар алдаа гарсан байршлыг маш тодорхой заадаг болсон төдийгүй гуравдагч өргөтгөлүүд (extensions) DuckDB-д өөрсдийн хүссэн SQL синтаксээ нэмэх гарц нээгдэв.
  • Native Timezone: Цагийн бүс болон хуанлийн тооцоолол хийхэд гадны хүнд ICU санг шаардахгүйгээр суурь хөдөлгүүртээ өөрийн гэсэн хөнгөн санг суулгаж өгчээ.

Шилжихэд (Migration) юуг анхаарах вэ?

DuckDB 2.0 LTS-ийг ашиглахаар шийдсэн бол нэг маш чухал өөрчлөлтийг анхаарах шаардлагатай: Файлын форматын буцах нийцэл (backward compatibility).

DuckDB 2.0-оор үүсгэгдсэн өгөгдлийн сангийн файлуудыг 1.x болон өмнөх хувилбарууд нээж чадахгүй. Тиймээс production орчинд байгаа өгөгдлөө шинэчлэхийн өмнө Parquet эсвэл CSV хэлбэрээр экспортлож авах, эсвэл шинэ хувилбар луу бүрэн шилжих төлөвлөгөөгөө гаргахыг хөгжүүлэгчид зөвлөж байна.

DuckDB нь энгийн аналитик сангаас эхлээд бие даасан сервер, үүлэн өгөгдлийн зангилаа болтлоо хөгжсөнийг 2.0.0 LTS баталж өглөө. Хэрэв та өөрийн төсөлдөө өгөгдөл боловсруулах, аналитик хийх шаардлагатай байгаа бол шинэ хувилбарыг туршиж үзэх цаг нь яг одоо иржээ.

Эх сурвалж: DuckDB Official Announcement & Engineering Blog, Hacker News Community Discussion

Сэтгэгдэл

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