Kutolewa kwa DBMS SQLite 3.42 na DuckDB 0.8.0. CG/SQL na utekelezaji wa taratibu zilizohifadhiwa za SQLite

Kutolewa kwa SQLite 3.42, DBMS nyepesi iliyoundwa kama maktaba programu-jalizi, kumechapishwa. Nambari ya SQLite inasambazwa katika kikoa cha umma, i.e. inaweza kutumika bila vikwazo na bila malipo kwa madhumuni yoyote. Usaidizi wa kifedha kwa wasanidi wa SQLite hutolewa na muungano maalum ulioundwa, unaojumuisha makampuni kama vile Adobe, Oracle, Mozilla, Bentley na Bloomberg.

Mabadiliko kuu:

  • Kwa faharisi za maandishi kamili ya FTS5, amri ya kufuta-salama inatekelezwa, ambayo husafisha kabisa data zote za mabaki baada ya kufutwa.
  • Kazi za kuchakata data katika umbizo la JSON sasa zinaauni viendelezi vya JSON5.
  • Kipanga hoja kilichoboreshwa. Uboreshaji wa hesabu ya mwonekano umewezeshwa kwa chaguomsingi. Imeondoa ushughulikiaji wa safu wima ambazo hazijatumika katika hoja ndogo. Utekelezaji ulioboreshwa wa uboreshaji wa kusukuma-chini.
  • Imeongeza chaguo la "--unsafe-testing" kwenye CLI ili kuruhusu baadhi ya amri hatari kama vile ".testctrl" kutumika katika majaribio. Katika hali salama ("--safe"), amri za ".logi kwenye" ​​na ".log off" zinaruhusiwa. Usaidizi ulioongezwa kwa kitenganishi cha "β€”", kwa hoja ambapo usindikaji wa chaguo umezimwa. Vigezo vya ":inf" na ":nan" vilivyoongezwa vinavyohusishwa na thamani za infinity na NaN.
  • Majina ya vitendaji vya SQL vilivyoainishwa na programu yanaruhusiwa kuingiliana na manenomsingi ya MSALABA, FULL, NDANI, KUSHOTO, ASILI, NJE, na KULIA.
  • Uwezo uliopanuliwa wa PRAGMA integrity_check. Umeongeza hundi ya kubainisha thamani ya NaN katika safu wima na hali ya NOT NULL. Maudhui ya habari yaliyoboreshwa ya ujumbe wa makosa.
  • Nyongeza ya kipindi huruhusu uingiliaji wa mabadiliko kutoka kwa jedwali bila ROWIDs.
  • Kirekebishaji cha "subsec" kimeongezwa kwa vitendakazi vya kufanya kazi na saa na tarehe ili kutumia sehemu za sekunde.
  • Imepunguza kina cha urejeshaji chaguomsingi kwa safu na vitu vya JSON kutoka 2000 hadi 1000.

Kwa kuongezea, toleo la DuckDB 0.8.0 DBMS limeundwa, ambalo hutengeneza lahaja ya SQLite, iliyoboreshwa na vipengele na uboreshaji wa kutekeleza maswali ya uchanganuzi yanayojumuisha sehemu kubwa ya data iliyohifadhiwa, kwa mfano, kukusanya maudhui yote ya majedwali au kuunganisha kadhaa. meza kubwa. Lahaja iliyopanuliwa ya lugha ya SQL imetolewa, ikijumuisha uwezo wa ziada wa kushughulikia maswali magumu sana na ya muda mrefu, pamoja na usaidizi wa aina changamano (safu, miundo, miungano), utekelezaji wa wakati mmoja wa maswali mengi, na utekelezaji wa maswali moja kwa moja kutoka. faili katika umbizo la CSV, JSON na Parquet. Inawezekana kuagiza kutoka kwa PostgreSQL DBMS.

Kwa kuongezea nambari ya ganda kutoka kwa SQLite, mradi hutumia kichanganuzi kutoka kwa PostgreSQL, kilichohamishwa hadi maktaba tofauti, sehemu ya Tarehe ya Hesabu kutoka MonetDB, utekelezaji wake wa kazi za dirisha (kulingana na algorithm ya Ukusanyaji wa Sehemu ya Miti), kichakataji cha kawaida cha kujieleza. kulingana na maktaba ya RE2, kiboreshaji cha hoja yake, utaratibu wa udhibiti wa MVCC wakati huo huo wa utekelezaji wa kazi (Udhibiti wa Concurrency wa Multi-Version), na vile vile injini ya utekelezaji ya hoja iliyowekewa vekta kulingana na algorithm ya Hyper-Pipelining Query, ambayo inaruhusu usindikaji wa seti kubwa za maadili mara moja katika operesheni moja. Nambari ya mradi inasambazwa chini ya leseni ya MIT.

Katika toleo jipya la DuckDB:

  • Imeongeza maneno mapya "PIVOT" na "UNPIVOT" ili kubadilisha safu mlalo kuwa safu wima na kinyume chake.
  • Usawazishaji ulioboreshwa wakati wa kuagiza na kusafirisha data. Kwa chaguomsingi, usomaji kutoka kwa faili katika umbizo la CSV hadi mitiririko mingi na uandishi wa nyuzi nyingi hutekelezwa unapotumia umbizo la Parquet, CSV na JSON.
  • Opereta "**" iliongezwa ili kujirudia rudia kwenye saraka wakati wa kufafanua njia za faili (km KUTOKA "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Usaidizi ulioongezwa wa shughuli za kuunganisha (JIUNGE) kwa data katika mfumo wa mfululizo wa muda (vipande vya thamani za parameta kwa vipindi maalum vya muda), ambapo kigezo cha kuunganisha rekodi sio sawa, lakini ni takriban sawa ya maadili. kwenye uwanja na wakati (kwa mfano, unaweza kuchanganya rekodi, wakati ambao hutofautiana kwa si zaidi ya dakika 1).
  • Upakiaji ulioahirishwa wa metadata ya hifadhidata umetekelezwa, ambayo ilifanya iwezekane kuharakisha uzinduzi wa DBMS kwa mara kadhaa.
  • Usaidizi ulioongezwa wa kuunganisha kazi maalum katika Python.
  • Usaidizi ulioongezwa kwa ADBC (Muunganisho wa Hifadhidata ya Kishale) kwa uhamishaji wa data kwa kutumia Kishale cha Apache.
  • Ufungaji uliotekelezwa wa kuunganishwa na msimbo wa Swift.
  • Ilibadilisha tabia ya mgawanyiko ("/") opereta, ambayo sasa hufanya hesabu za sehemu zinazoelea kwa chaguo-msingi badala ya utendakazi kamili. Opereta mpya "//" imependekezwa kwa mgawanyiko kamili. Tabia ya zamani inaweza kurejeshwa kwa kuweka "SET integer_division=true;".
  • Njia ya uhasibu kwa rekodi zisizofaa wakati wa kupanga imebadilishwa kutoka "NULLS FIRST" hadi "NULLS LAST", i.e. Thamani NULL sasa zitaonyeshwa mwishoni badala ya mwanzo wa orodha. Tabia ya zamani inaweza kurejeshwa kwa kuweka "SET default_null_order='nulls_first';".

Zaidi ya hayo, mradi wa CG/SQL uliotengenezwa na Facebook, ambao hutoa jenereta ya msimbo kwa kutumia taratibu zilizohifadhiwa na SQLite, unaweza kuzingatiwa. CG/SQL hukuruhusu kuunda taratibu zilizohifadhiwa katika lahaja maalum ya T-SQL (Transact-SQL), ambayo hukuruhusu kuita kazi za maktaba ya kawaida ya C na ufikiaji wa data katika SQLite. Taratibu zilizohifadhiwa zimekusanywa katika msimbo wa C ambao hutumia API ya SQLite C kutekeleza vitendo maalum na kushughulikia maswali changamano. Taratibu zilizokusanywa zilizohifadhiwa zinaweza kuunganishwa na programu za C, Java, na Objective-C. Nambari ya mradi imeandikwa kwa C na kusambazwa chini ya leseni ya MIT.

Chanzo: opennet.ru

Kuongeza maoni