DBMS SQLite 3.42 և DuckDB 0.8.0-ի թողարկում: CG/SQL՝ SQLite-ի համար պահված ընթացակարգերի ներդրմամբ

Հրապարակվել է SQLite 3.42-ի՝ թեթև DBMS-ի թողարկումը, որը նախատեսված է որպես plug-in գրադարան: SQLite կոդը բաշխվում է հանրային տիրույթում, այսինքն. կարող է օգտագործվել առանց սահմանափակումների և անվճար ցանկացած նպատակով: SQLite ծրագրավորողներին ֆինանսական աջակցություն է ցուցաբերում հատուկ ստեղծված կոնսորցիումը, որը ներառում է այնպիսի ընկերություններ, ինչպիսիք են Adobe-ը, Oracle-ը, Mozilla-ն, Bentley-ն և Bloomberg-ը:

Խոշոր փոփոխություններ.

  • FTS5 ամբողջական տեքստային ինդեքսների համար ներդրվել է անվտանգ ջնջման հրամանը, որն ամբողջությամբ ջնջում է բոլոր մնացորդային տվյալները ջնջումից հետո:
  • JSON տվյալների մշակման գործառույթներն այժմ աջակցում են JSON5 ընդլայնումներին:
  • Բարելավված հարցումների պլանավորող: Լռելյայնորեն, դիտումների քանակի օպտիմալացումը միացված է: Չօգտագործված սյունակների մշակումը ենթհարցերում վերացված է: Նվազեցված օպտիմալացման բարելավված իրականացում:
  • Հրամանի տողի ինտերֆեյսին ավելացվել է «--unsafe-testing» տարբերակը, որը թույլ է տալիս օգտագործել որոշ վտանգավոր հրամաններ, օրինակ՝ «.testctrl», որոնք նախատեսված են թեստավորման համար: Անվտանգ ռեժիմում («-safe») թույլատրվում է «.log on» և «.log off» հրամանների օգտագործումը: Ավելացվեց «—» սահմանազատիչի աջակցություն, արգումենտների համար, որոնցից հետո ընտրանքների մշակումն անջատված է: Ավելացվել են «:inf» և «:nan» պարամետրեր, որոնք կապված են անսահմանության և NaN արժեքների հետ:
  • Ծրագրի կողմից սահմանված SQL ֆունկցիաների անունները թույլատրվում են համընկնել CROSS, FULL, INNER, LEFT, NATURAL, OUTER և RIGHT հիմնաբառերի հետ:
  • PRAGMA integrity_check-ի հնարավորություններն ընդլայնվել են: Ավելացվեց ստուգում NOT NULL պայմանով սյունակներում NaN արժեքները նշելու համար: Սխալների հաղորդագրությունների բարելավված տեղեկատվական բովանդակությունը:
  • Սեսիայի հավելումը թույլ է տալիս ընդհատել փոփոխությունները աղյուսակներից առանց ROWID-ի:
  • «Subsec» փոփոխիչն ավելացվել է ժամանակների և ամսաթվերի հետ աշխատելու գործառույթներին՝ վայրկյանների կոտորակներ օգտագործելու համար:
  • Զանգվածների և JSON օբյեկտների կանխադրված ռեկուրսիայի խորությունը 2000-ից կրճատվել է մինչև 1000:

Բացի այդ, ստեղծվել է DuckDB 0.8.0 DBMS-ի թողարկումը, որը մշակում է SQLite-ի տարբերակը՝ ընդլայնված վերլուծական հարցումների կատարման հնարավորություններով և օպտիմիզացիաներով, որոնք ընդգրկում են պահված տվյալների զգալի մասը, օրինակ՝ կատարելով ամբողջ բովանդակության ագրեգացիա։ սեղանների կամ մի քանի խոշոր աղյուսակների միաձուլում: Ապահովում է SQL-ի առաջադեմ բարբառ, որը ներառում է լրացուցիչ հնարավորություններ շատ բարդ և ժամանակատար հարցումների մշակման համար, ինչպես նաև աջակցում է բարդ տիպերին (զանգվածներ, կառուցվածքներ, միավորումներ), միաժամանակ մի քանի հարցումներ գործարկելիս և ուղղակիորեն CSV, JSON և Parquet ֆայլերից հարցումներ գործարկել: . Հնարավոր է ներմուծել PostgreSQL DBMS-ից:

Ի լրումն SQLite-ի կեղևի ծածկագրի, նախագիծը օգտագործում է PostgreSQL-ի վերլուծիչ առանձին գրադարանում, Date Math բաղադրիչը MonetDB-ից, պատուհանի գործառույթների իր սեփական իրականացումը (հիմնված Segment Tree Aggregation ալգորիթմի վրա), սովորական արտահայտությունների պրոցեսոր՝ հիմնված RE2 գրադարանը, սեփական հարցումների օպտիմիզատորը և առաջադրանքների միաժամանակյա կատարման MVCC կառավարման մեխանիզմը (Multi-Version Concurrency Control), ինչպես նաև վեկտորացված հարցումների կատարման շարժիչ՝ հիմնված Hyper-Pipelining Query Execution ալգորիթմի վրա, որը թույլ է տալիս արժեքների մեծ շարք պետք է մշակվի միանգամից մեկ գործողության ընթացքում: Ծրագրի կոդը բաշխվում է MIT լիցենզիայի ներքո:

DuckDB-ի նոր տարբերակում.

  • Ավելացրել է նոր արտահայտություններ «PIVOT» և «UNPIVOT»՝ տողերը սյունակների վերածելու և հակառակը:
  • Բարելավված զուգահեռացում տվյալների ներմուծման և արտահանման ժամանակ: Լռելյայնորեն, CSV ֆայլերից բազմաթելային ընթերցում և բազմաթելային գրություն իրականացվում է մանրահատակի, CSV և JSON ձևաչափերի օգտագործման ժամանակ:
  • Ավելացվեց «**» օպերատորը՝ ֆայլերի ուղիները որոշելիս ռեկուրսիվորեն կրկնելու համար գրացուցակներում (օրինակ՝ FROM «'data/glob/crawl/stackoverflow/**/*.csv';»):
  • Ավելացվել է տվյալների միաձուլման գործողությունների (JOIN) աջակցություն՝ ժամանակային շարքի տեսքով (պարամետրերի արժեքների հատվածներ սահմանված ժամանակային ընդմիջումներով), որոնցում գրառումների միաձուլման չափանիշը ճշգրիտ չէ, այլ արժեքների մոտավոր համընկնումը։ ժամանակի հետ դաշտում (օրինակ, կարող եք միավորել գրառումները, որոնք տարբերվում են ոչ ավելի, քան 1 րոպեով):
  • Իրականացրեց տվյալների բազայի մետատվյալների ծույլ բեռնումը, ինչը հնարավորություն տվեց տասնյակ անգամ արագացնել DBMS-ի գործարկումը:
  • Ավելացվել է Python-ում հատուկ գործառույթների միացման աջակցություն:
  • Ավելացվել է ADBC ​​(Arrow Database Connectivity) API-ի աջակցությունը՝ 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 լիցենզիայի ներքո:

Source: opennet.ru

Добавить комментарий