Нашри DBMS SQLite 3.42 ва DuckDB 0.8.0. CG/SQL бо татбиқи расмиёти захирашуда барои SQLite

Нашри SQLite 3.42, як DBMS сабук, ки ҳамчун китобхонаи плагин тарҳрезӣ шудааст, нашр шуд. Рамзи SQLite ҳамчун домени ҷамъиятӣ тақсим карда мешавад, яъне. метавонад бидуни маҳдудият ва ройгон барои ҳама гуна мақсад истифода шавад. Дастгирии молиявии таҳиягарони SQLite аз ҷониби консорсиуми махсус сохташуда, ки ширкатҳои монанди Adobe, Oracle, Mozilla, Bentley ва Bloombergро дар бар мегиранд, пешниҳод карда мешавад.

Тағйироти асосӣ:

  • Барои индексҳои пурраи матнии FTS5, фармони бехатар-нест кардан амалӣ карда шудааст, ки пас аз ҳазф тамоми маълумоти боқимондаро комилан тоза мекунад.
  • Функсияҳои коркарди маълумоти JSON ҳоло васеъшавии JSON5-ро дастгирӣ мекунанд.
  • Банақшагирии мукаммали дархост. Бо нобаёнӣ, оптимизатсияи ҳисоб-намоиш фаъол аст. Коркарди сутунҳои истифоданашуда дар зерпурсишҳо бартараф карда мешавад. Татбиқи такмилёфтаи оптимизатсияи поён.
  • Ба интерфейси сатри фармон имконоти "--unsafe-testing" илова карда шуд, ки имкон медиҳад, ки баъзе фармонҳои хатарнок, ба мисли ".testctrl", ки барои истифода дар озмоиш пешбинӣ шудаанд. Дар ҳолати бехатар («-бехатар») истифодаи фармонҳои «.log on» ва «.log off» иҷозат дода мешавад. Дастгирии иловагӣ барои ҷудокунандаи "—" барои далелҳо, ки пас аз он коркарди опсия ғайрифаъол мешавад. Параметрҳои ":inf" ва ":nan" илова карда шуданд, ки бо арзишҳои беохир ва NaN алоқаманданд.
  • Номҳои функсияҳои аз ҷониби барнома муайяншудаи SQL иҷозат дода мешаванд, ки бо калимаҳои CROSS, FULL, INNER, LEFT, NATURAL, OUTER ва RIGHT мувофиқат кунанд.
  • Имкониятҳои PRAGMA integrity_check васеъ карда шуданд. Санҷиши муайян кардани арзишҳои NaN дар сутунҳо бо шарти НЕСТ NULL илова карда шуд. Мундариҷаи такмилёфтаи иттилооти паёмҳои хатогӣ.
  • Иловаи сеанс имкон медиҳад, ки тағиротҳоро аз ҷадвалҳо бидуни ROWID бардорад.
  • Тағирдиҳандаи "subec" ба функсияҳо барои кор бо вақтҳо ва санаҳо барои истифодаи фраксияҳои сонияҳо илова карда шудааст.
  • Амиқии рекурсии пешфарз барои массивҳо ва объектҳои JSON аз 2000 то 1000 кам карда шуд.

Илова бар ин, нашри DBMS DuckDB 0.8.0 сохта шудааст, ки версияи SQLite-ро таҳия мекунад, ки бо қобилиятҳо ва оптимизатсияҳо барои иҷрои дархостҳои таҳлилӣ, ки қисми зиёди маълумоти захирашударо фаро мегирад, масалан, ҷамъоварии тамоми мундариҷаро васеъ мекунад. ҷадвалҳо ё якҷоя кардани якчанд ҷадвалҳои калон. Як лаҳҷаи пешрафтаи SQL-ро таъмин мекунад, ки дорои қобилиятҳои иловагии коркарди дархостҳои хеле мураккаб ва вақтталаб мебошад ва инчунин намудҳои мураккабро (массивҳо, сохторҳо, иттифоқҳо), иҷро кардани дархостҳои сершумор дар як вақт ва иҷро кардани дархостҳоро мустақиман аз файлҳои CSV, JSON ва Parket дастгирӣ мекунад. . Аз DBMS PostgreSQL ворид кардан мумкин аст.

Илова ба рамзи қабати SQLite, лоиҳа як таҳлилгари PostgreSQL-ро дар китобхонаи алоҳида, ҷузъи Date Math аз MonetDB, амалисозии худи функсияҳои тиреза (дар асоси алгоритми Aggregation Tree Segment), протсессори ифодаи муқаррарӣ дар асоси китобхонаи RE2, оптимизатори дархостҳои худ ва механизми идоракунии MVCC ҳамзамон иҷрои вазифаҳо (Назорати ҳамзамон бисёр версия), инчунин як муҳаррики иҷроиши дархостҳои векторӣ дар асоси алгоритми Иҷрои Query Hyper-Pipelining, ки ба маҷмӯи бузурги арзишҳо имкон медиҳад ки якбора дар як амалиёт коркард карда шавад. Рамзи лоиҳа тибқи иҷозатномаи MIT паҳн карда мешавад.

Дар версияи нави DuckDB:

  • Ибораҳои нави "PIVOT" ва "UNPIVOT" барои табдил додани сатрҳо ба сутунҳо ва баръакс илова карда шуданд.
  • Параллелизатсияи беҳтаршуда ҳангоми воридот ва содироти маълумот. Бо нобаёнӣ, хониши чанд ришта аз файлҳои CSV ва навиштани чанд ришта ҳангоми истифодаи форматҳои Parquet, CSV ва JSON амалӣ карда мешавад.
  • Оператори "**" барои такрори такрорӣ тавассути директорияҳо ҳангоми муайян кардани роҳҳои файл илова карда шуд (масалан, АЗ "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Дастгирии иловагии амалиёти якҷоякунӣ (JOIN) барои маълумот дар шакли силсилаи вақт (буридаҳои арзишҳои параметрҳо дар фосилаҳои муайян), ки дар он меъёри муттаҳидсозии сабтҳо дақиқ нест, балки як тасодуфи тахминии арзишҳо мебошад дар майдони бо вақт (масалан, шумо метавонед сабтҳоро якҷоя кунед, ки вақт на бештар аз 1 дақиқа фарқ мекунад).
  • Боркунии танбалии метамаълумотҳои базавӣ ба амал бароварда шуд, ки ин имкон дод, ки ба кор андохтани DBMS даҳҳо маротиба суръат бахшад.
  • Дастгирии иловашуда барои пайваст кардани функсияҳои фармоишӣ дар Python.
  • Дастгирии иловашуда барои API ADBC ​​(Arrow Database Connectivity) барои интиқоли маълумот бо истифода аз Apache Arrow.
  • Барои ҳамгироӣ бо рамзи Swift ҳатмӣ амалӣ карда шуд.
  • Рафтори оператори тақсимкунӣ ("/") барои иҷро кардани ҳисобҳои нуқтаи шинокунанда ба ҷои амалиёти бутун бо нобаёнӣ тағир дода шуд. Барои тақсими адад оператори нави “//” пешниҳод карда мешавад. Рафтори кӯҳнаро бо гузоштани "SET integer_division=true;" баргардонидан мумкин аст.
  • Усули ба инобат гирифтани сабтҳои сифр ҳангоми мураттабкунӣ аз "NULLS FIRST" ба "NULLS LAST" иваз карда шуд, яъне. Қиматҳои NULL акнун на дар аввали рӯйхат, на дар охири рӯйхат чоп карда мешаванд. Рафтори кӯҳнаро бо гузоштани "SET default_null_order='nulls_first';" баргардонидан мумкин аст.

Илова бар ин, мо метавонем лоиҳаи CG/SQL-ро, ки аз ҷониби Facebook таҳия шудааст, қайд кунем, ки генератори кодро барои истифодаи расмиёти ҳифзшуда бо SQLite таъмин мекунад. CG/SQL ба шумо имкон медиҳад, ки расмиёти ҳифзшударо бо лаҳҷаи махсуси T-SQL (Transact-SQL) нависед, ки имкон медиҳад ба функсияҳои китобхонаи стандартии C занг занед ва маълумотро дар SQLite дастрас намоед. Процедураҳои захирашудаи тавлидшуда ба рамзи C тартиб дода мешаванд, ки SQLite C API-ро барои иҷрои амалҳои мушаххас ва коркарди дархостҳои мураккаб истифода мебаранд. Процедураҳои захирашудаи тартибдодашуда метавонанд ба барномаҳои C, Java ва Objective-C пайваст шаванд. Рамзи лоиҳа дар C навишта шудааст ва таҳти иҷозатномаи MIT паҳн карда мешавад.

Манбаъ: opennet.ru

Илова Эзоҳ