DBMS SQLite 3.42 болон DuckDB 0.8.0 хувилбарууд. SQLite-д зориулсан хадгалагдсан процедурын хэрэгжилттэй CG/SQL

SQLite 3.42, залгаас номын сан хэлбэрээр зохион бүтээсэн хөнгөн DBMS-ийн хувилбар хэвлэгдэн гарлаа. SQLite кодыг олон нийтэд түгээдэг, i.e. ямар ч зорилгоор ямар ч хязгаарлалтгүйгээр, үнэ төлбөргүй ашиглаж болно. SQLite хөгжүүлэгчдэд зориулсан санхүүгийн дэмжлэгийг Adobe, Oracle, Mozilla, Bentley, Bloomberg зэрэг компаниудыг багтаасан тусгайлан байгуулагдсан консорциум гүйцэтгэдэг.

Үндсэн өөрчлөлтүүд:

  • FTS5-ийн бүрэн текстийн индексүүдийн хувьд аюулгүй устгах командыг хэрэгжүүлсэн бөгөөд энэ нь устгасны дараа бүх үлдэгдэл өгөгдлийг бүрэн арилгадаг.
  • JSON өгөгдлийг боловсруулах функцууд одоо JSON5 өргөтгөлүүдийг дэмждэг.
  • Сайжруулсан асуулга төлөвлөгч. Өгөгдмөлөөр үзэхийн тоон оновчлол идэвхжсэн байна. Дэд асуулгад ашиглагдаагүй баганыг боловсруулахыг арилгасан. Доошоо түлхэх оновчлолын хэрэгжилт сайжирсан.
  • Тушаалын мөрийн интерфэйс дээр "--unsafe-testing" сонголтыг нэмсэн бөгөөд энэ нь туршилтанд ашиглах зориулалттай ".testctrl" зэрэг аюултай командуудыг ашиглах боломжийг олгодог. Аюулгүй горимд (“-аюулгүй”) “.log on” болон “.log off” командуудыг ашиглахыг зөвшөөрдөг. Сонголтын боловсруулалтыг идэвхгүй болгосон аргументуудын "-" хязгаарлагчийн дэмжлэгийг нэмсэн. Хязгааргүй болон NaN утгатай холбоотой ":inf" болон ":nan" параметрүүдийг нэмсэн.
  • Аппликешнээр тодорхойлсон SQL функцийн нэр нь CROSS, FULL, Inner, LEFT, NATURAL, OUTER, RIGHT гэсэн түлхүүр үгстэй давхцахыг зөвшөөрдөг.
  • PRAGMA integrity_check-ийн боломжууд өргөжсөн. БИШ NULL нөхцөл бүхий баганад NaN утгыг зааж өгсөн эсэхийг шалгахыг нэмсэн. Алдааны мэдэгдлийн мэдээллийн агуулгыг сайжруулсан.
  • Сеансын нэмэлт нь ROWID-гүй хүснэгтийн өөрчлөлтийг таслан зогсоох боломжийг олгодог.
  • "Дэд сек" өөрчлөгчийг секундын бутархай ашиглахын тулд цаг, огноотой ажиллах функцүүдэд нэмсэн.
  • Массив болон JSON объектуудын өгөгдмөл рекурсын гүнийг 2000-аас 1000 болгон бууруулсан.

Нэмж дурдахад, хадгалагдсан өгөгдлийн нэлээд хэсгийг хамарсан аналитик асуулга явуулах, жишээлбэл, бүх агуулгыг нэгтгэх чадвар, оновчлолоор өргөжүүлсэн SQLite хувилбарыг боловсруулсан DuckDB 0.8.0 DBMS-ийн хувилбарыг бүтээсэн. хүснэгтүүд эсвэл хэд хэдэн том хүснэгтүүдийг нэгтгэх. Маш нарийн төвөгтэй, цаг хугацаа шаардсан асуулга боловсруулах нэмэлт чадамжийг агуулсан SQL-ийн дэвшилтэт хэлээр хангадаг бөгөөд мөн нарийн төвөгтэй төрлүүдийг (массив, бүтэц, нэгдэл), нэгэн зэрэг олон асуулга ажиллуулах, CSV, JSON болон Паркет файлуудаас шууд асуулга явуулахыг дэмждэг. . PostgreSQL DBMS-ээс импортлох боломжтой.

Төсөл нь SQLite-ийн бүрхүүлийн кодоос гадна тусдаа номын санд PostgreSQL-ийн задлан шинжлэгч, MonetDB-ийн Date Math бүрэлдэхүүн хэсэг, цонхны функцүүдийн өөрийн хэрэгжилт (Segment Tree Agregation алгоритм дээр суурилсан), ердийн илэрхийлэл процессорыг ашигладаг. RE2 номын сан, өөрийн хүсэлтийг оновчтой болгогч, даалгавруудыг нэгэн зэрэг гүйцэтгэх MVCC хяналтын механизм (Олон хувилбарын зэрэгцээ хяналт), мөн Hyper-Pipelining Query Гүйцэтгэлийн алгоритм дээр суурилсан векторжуулсан асуулга гүйцэтгэх хөдөлгүүр нь их хэмжээний утгыг авах боломжийг олгодог. нэг үйл ажиллагаанд нэг дор боловсруулагдана. Төслийн кодыг MIT лицензийн дагуу түгээдэг.

DuckDB-ийн шинэ хувилбарт:

  • Мөрүүдийг багана болгон өөрчлөхийн тулд "PIVOT" болон "UNPIVOT" гэсэн шинэ илэрхийлэлүүдийг нэмсэн.
  • Мэдээллийг импортлох, экспортлох үед параллель байдлыг сайжруулсан. Паркет, CSV болон JSON форматыг ашиглах үед CSV файлуудаас олон урсгалтай унших болон олон урсгалтай бичихийг анхдагчаар хэрэгжүүлдэг.
  • Файлын замыг тодорхойлохдоо лавлахуудыг давтах зорилгоор "**" операторыг нэмсэн (жишээ нь, FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Бичлэгүүдийг нэгтгэх шалгуур нь яг тодорхой биш, харин утгуудын ойролцоо давхцах цаг хугацааны цуваа (заасан хугацааны интервал дахь параметрийн утгуудын зүсмэлүүд) хэлбэрээр өгөгдөлд нэгтгэх үйлдлүүдийг (JOIN) дэмжлэгийг нэмсэн. цаг хугацааны талбарт (жишээ нь, та 1 минутаас ихгүй хугацаагаар ялгаатай бичлэгүүдийг нэгтгэж болно).
  • Өгөгдлийн сангийн мета өгөгдлийн залхуу ачааллыг хэрэгжүүлсэн нь DBMS-ийн нээлтийг хэдэн арван удаа хурдасгах боломжтой болсон.
  • Python дээр захиалгат функцүүдийг холбох дэмжлэг нэмэгдсэн.
  • Apache Arrow ашиглан өгөгдөл дамжуулахад зориулсан ADBC ​​(Arrow Database Connectivity) API-ийн дэмжлэгийг нэмсэн.
  • Swift кодтой нэгтгэхийн тулд холболт хийгдсэн.
  • Анхдагчаар бүхэл тоон үйлдлийн оронд хөвөгч цэгийн тооцооллыг гүйцэтгэхийн тулд хуваах операторын ("/") үйлдлийг өөрчилсөн. Бүхэл тоонд хуваахад шинэ оператор “//” санал болгож байна. “SET integer_division=true;” тохиргоог хийснээр хуучин үйлдлийг буцаах боломжтой.
  • Эрэмбэлэхдээ тэг бичлэгийг харгалзан үзэх аргыг “ЭХЛЭЭД NULLS” байсныг “NULLS LAST” болгон өөрчилсөн, өөрөөр хэлбэл. NULL утгыг одоо жагсаалтын эхэнд биш харин төгсгөлд нь хэвлэх болно. “SET default_null_order='nulls_first';” тохиргоог хийснээр хуучин үйлдлийг буцаах боломжтой.

Нэмж дурдахад бид Facebook-ийн боловсруулсан CG/SQL төслийг тэмдэглэж болох бөгөөд энэ нь SQLite-д хадгалагдсан процедурыг ашиглах код үүсгэгчээр хангадаг. CG/SQL нь хадгалагдсан процедурыг T-SQL (Transact-SQL) хэлний тусгай аялгаар бичих боломжийг олгодог бөгөөд энэ нь стандарт Си номын сангийн функцуудыг дуудаж, SQLite дахь өгөгдөлд хандах боломжийг олгодог. Үүсгэсэн хадгалагдсан процедурыг SQLite C API-г ашиглан заасан үйлдлүүд болон нарийн төвөгтэй асуулга боловсруулахад ашигладаг C код болгон хөрвүүлдэг. Эмхэтгэсэн хадгалагдсан процедурыг C, Java, Objective-C програмуудтай холбож болно. Төслийн код нь C хэл дээр бичигдсэн бөгөөд MIT лицензийн дагуу түгээгддэг.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх