
DuckDB v2.0-ის გადახედვა: სერვერული რეჟიმი, ტრიგერები და ახალი შენახვის ფორმატი
ანალიტიკური ბაზა მიიღებს კლიენტ-სერვერის რეჟიმს, ტრიგერების სრულ მხარდაჭერას, VARIANT ტიპს და ასინქრონულ I/O-ს. 2.0 ვერსია, სახელად Cyanoptera, შემოდგომაზე გამოდის.
DuckDB-მ გამოაქვეყნა 2.0 ვერსიის გადახედვა — პროცესში მომუშავე ანალიტიკური ბაზის მომდევნო მთავარი გამოშვება, რომელიც შემოდგომაზეა მოსალოდნელი და სახელად Cyanoptera ერქმევა. გამოშვება მარტში გამოსული v1.5-ის შემდეგ 10 000-ზე მეტ commit-ს მოიცავს და პროექტი მას „DuckDB-ის, როგორც სერვერის, წლის დასაწყისად" აღწერს.
სერვერული რეჟიმი
მთავარი სიახლე კლიენტ-სერვერის მხარდაჭერაა. მაისში წარდგენილი quack გაფართოება DuckDB-ის საკუთარ პროტოკოლს ახორციელებს და v2.0-ში სტაბილურ ხდება: ნებისმიერ DuckDB პროცესს შეუძლია საკუთარი ბაზა ქსელში გაუზიაროს, ხოლო სხვა DuckDB მას ახალი CONNECT ოპერატორით დაუკავშირდება და მოთხოვნებს იქ გადაამისამართებს. CONNECT მხოლოდ DuckDB-ით არ შემოიფარგლება: PostgreSQL-ის ან MySQL-ის სერვერზე მიმართული ის SQL-ს პირდაპირ დისტანციურ სისტემას უგზავნის, ცხრილების ქსელში გადმოტანის ნაცვლად — ამას ახალი remote pushdown ოპტიმიზატორი უზრუნველყოფს. გუნდი აღნიშნავს, რომ DuckDB თავიდანვე ტრანზაქციული და სრული MVCC-ის მქონე ბაზაა — უპირატესობა, რომელიც ახლა მრავალმომხმარებლიან, გრძელვადიან განლაგებებში იჩენს თავს. იმავე მიზეზით გადამუშავდა მეტრიკები და ლოგირება.
VARIANT, ტრიგერები და SQL-ის დამატებები
v1.5-ში შემოსული VARIANT ტიპი სრულფასოვანი ხდება: „shredding" პირდაპირ საცავიდან ხდება, ამოღება scan-ებზე გადადის, Parquet-ის კითხვა და ჩაწერა მას მხარს უჭერს, ემატება variant_* ფუნქციების ოჯახი. გუნდი გეგმავს, გამოშვებიდან მალევე ჩვეულებრივი JSON ტიპიც VARIANT-ზე დააფუძნოს — არსებული JSON დატვირთვები იგივე უპირატესობებს ხელახალი დაწერის გარეშე მიიღებს.
ტრიგერები სრულად ჩნდება: BEFORE და AFTER, FOR EACH ROW და FOR EACH STATEMENT, გარდამავალი ცხრილები REFERENCING OLD/NEW TABLE-ით, რამდენიმე ტრიგერი ერთ მოვლენაზე, RETURNING და DROP TRIGGER. კლასიკური გამოყენება აუდიტის ცხრილია, რომელიც ცვლილებებს აღრიცხავს.
SQL დიალექტს ემატება top-k მსგავსების ძიება join-ის სახით (APPROX NEAREST — ვექტორული და embedding დატვირთვებისთვის), DML CTE-ების შიგნით, ჩადგმული სქემები, $variable სინტაქსი, JSON-ის შეცვლის ფუნქციები როგორიცაა json_set, და რეკურსიული CTE-ები USING KEY აგრეგაციით.
უფრო სწრაფი I/O, სწრაფი მოთხოვნები და ხელმოწერილი გაფართოებები
ასინქრონული I/O ახლა მთელ ძრავში მოქმედებს, ამიტომ I/O ფენა დამოუკიდებლად ფართოვდება მოთხოვნების დამუშავებისგან — ჯერ Parquet, შემდეგ CSV და DuckDB-ის საკუთარი ფორმატი, დამატებით MMAP და DIRECT_IO რეჟიმები. ყველაზე დიდი მოგება ქსელურ საცავზეა. მოთხოვნების მხარეს ნაწილობრივი აგრეგატები join-ების ქვემოთ გადადის, რეკურსიული CTE-ების ძრავა გადაიწერა, აგრეგაციები მეხსიერების ამოწურვისას დისკზე იშლება, ხოლო Windows-ის CLI მრავალნაკადიანი შედეგების მასალიზაციაში დაახლოებით 2.2-ჯერ დაჩქარდა.
გაფართოებები იღებენ გადამუშავებულ სტაბილურ C API-ს და, ჯერ კიდევ დამუშავების პროცესში, მომხმარებლის მიერ რეგისტრირებულ რეპოზიტორიებს, რომლებიც RSA-ით ხელმოწერილ გაფართოებებს ავრცელებენ; რეგისტრაციისას თითოეული გასაღების SHA-256 ანაბეჭდი იბეჭდება. შემოდგომიდან DuckDB Foundation-ს დაემატება დაინტერესებული მხარეების მრჩეველთა საბჭო, რომელიც DuckDB-ის, DuckLake-ისა და Quack-ის განვითარების გეგმებზე იმუშავებს. წინასწარი ნაგებობები ამ შესაძლებლობების უმეტესობას უკვე შეიცავს, თუმცა გუნდი აფრთხილებს, რომ შემოდგომამდე დეტალები შეიძლება შეიცვალოს.
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.