DBMS SQLite 3.42 жана DuckDB 0.8.0 чыгаруу. SQLite үчүн сакталган процедураларды ишке ашыруу менен CG/SQL

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

Негизги өзгөрүүлөр:

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

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

SQLite кабык кодунан тышкары, долбоор өзүнчө китепканада PostgreSQL талдоочуну, MonetDBдан Date Math компонентин, терезе функцияларын өзүнүн ишке ашыруусун (Segment Tree Aggregation алгоритминин негизинде), кадимки экспресс процессорун колдонот. RE2 китепканасы, өзүнүн суроо-талаптарын оптималдаштыруучу жана MVCC башкаруу механизми бир эле учурда тапшырмаларды аткаруу (Мульти-Version Concurrency Control), ошондой эле чоң маанилердин топтомуна мүмкүндүк берген Hyper-Pipelining Query Execution алгоритмине негизделген векторлоштурулган суроону аткаруу механизми бир операцияда бир жолу иштетилет. Долбоордун коду MIT лицензиясы боюнча таратылат.

DuckDB жаңы версиясында:

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

Кошумчалай кетсек, Facebook тарабынан иштелип чыккан CG/SQL долбоорун белгилей кетсек болот, ал SQLite менен сакталган процедураларды колдонуу үчүн код генераторун камсыз кылат. CG/SQL сакталган процедураларды T-SQLдин (Transact-SQL) атайын диалектисинде жазууга мүмкүндүк берет, бул стандарттык Си китепканасынын функцияларын чакырууга жана SQLiteдеги маалыматтарга жетүүгө мүмкүндүк берет. Өндүрүлгөн сакталган процедуралар C кодуна түзүлөт, ал SQLite C API'ни көрсөтүлгөн аракеттерди аткаруу жана татаал сурамдарды иштетүү үчүн колдонот. Компиляцияланган сакталган процедураларды C, Java жана Objective-C программаларына туташтырууга болот. Долбоордун коду C тилинде жазылган жана MIT лицензиясы боюнча таратылат.

Source: opennet.ru

Комментарий кошуу