PostgreSQL թիմը հայտարարել է PostgreSQL 12-ի թողարկման մասին՝ բաց կոդով հարաբերական տվյալների բազայի կառավարման համակարգի վերջին տարբերակը:
PostgreSQL 12-ը զգալիորեն բարելավել է հարցումների կատարումը, հատկապես մեծ ծավալի տվյալների հետ աշխատելիս, ինչպես նաև օպտիմիզացրել է սկավառակի տարածության օգտագործումը ընդհանրապես:
Նոր առանձնահատկությունները ներառում են.
- JSON Path հարցումների լեզվի իրականացում (SQL/JSON ստանդարտի ամենակարևոր մասը);
- ընդհանուր աղյուսակի արտահայտությունների կատարման օպտիմալացում (WITH);
- աջակցություն ստեղծված սյունակների համար
Համայնքը նաև շարունակում է աշխատել PostgreSQL-ի ընդարձակման և հուսալիության վրա՝ զարգացնելով աջակցություն միջազգայնացման, իսկորոշման հնարավորությունների և համակարգը կառավարելու ավելի հեշտ ուղիների տրամադրման համար:
Այս թողարկումը ներառում է խցանելի պահեստավորման շարժիչների համար ինտերֆեյսի ներդրում, որն այժմ թույլ է տալիս ծրագրավորողներին ստեղծել տվյալների պահպանման իրենց սեփական մեթոդները:
Կատարողականի բարելավումներ
PostgreSQL 12-ը ներառում է ինդեքսավորման և բաժանման համակարգերի կատարողականության և պահպանման զգալի բարելավումներ:
B-tree ինդեքսները, PostgreSQL-ի ստանդարտ ինդեքսավորման տեսակը, օպտիմիզացվել են 12-րդ տարբերակում աշխատանքային բեռների համար, որոնք ներառում են ինդեքսի հաճախակի փոփոխություններ: PostgreSQL 12-ի համար TPC-C հենանիշի օգտագործումը ցույց տվեց տարածության օգտագործման միջին 40% կրճատում և հարցումների կատարողականի ընդհանուր աճ:
Բաժանված աղյուսակների վերաբերյալ հարցումները նկատելի բարելավումներ են ստացել, հատկապես հազարավոր բաժանմունքներից բաղկացած աղյուսակների համար, որոնք պահանջում են աշխատել տվյալների զանգվածների միայն սահմանափակ մասերի հետ: Բարելավվել է INSERT-ի և COPY-ի միջոցով բաժանված աղյուսակներում տվյալների ավելացման աշխատանքը, ինչպես նաև առանց հարցումների արգելափակման նոր բաժանմունք կցելու հնարավորությունը:
PostgreSQL 12-ը լրացուցիչ բարելավումներ է կատարել ինդեքսավորման համար, որոնք ազդում են ընդհանուր կատարողականի վրա, ներառյալ.
- նվազեցված ծախսեր, երբ ստեղծվում է WAL GiST, GIN և SP-GiST ինդեքսների տեսակների համար.
- GiST ինդեքսների վրա այսպես կոչված ծածկող ինդեքսներ (INCLUDE կետ) ստեղծելու ունակություն.
- «մոտակա հարեւանի» հարցումներ (k-NN որոնում) կատարելու ունակություն՝ օգտագործելով հեռավոր օպերատորը (<->) և օգտագործելով SP-GiST ինդեքսները.
- Ամենատարածված արժեքների (MCV) վիճակագրության հավաքագրման աջակցություն՝ օգտագործելով CREATE STATISTICS, որն օգնում է ավելի լավ հարցումների պլաններ ստանալ, երբ օգտագործում եք սյունակներ, որոնց արժեքները անհավասար բաշխված են:
PostgreSQL 11-ում ներդրված LLVM-ի միջոցով JIT կոմպիլյացիան այժմ լռելյայն միացված է: JIT կոմպիլյացիան բարելավում է կատարումը WHERE կետերի, թիրախային ցուցակների, ագրեգատների և որոշ ներքին գործառնությունների արտահայտությունների հետ աշխատելիս: Այն հասանելի է, եթե դուք կազմել եք PostgreSQL LLVM-ով կամ օգտագործում եք PostgreSQL փաթեթ, որը ստեղծվել է միացված LLVM-ով:
SQL լեզվի հնարավորությունների և ստանդարտ համատեղելիության բարելավում
PostgreSQL 12-ը ներկայացրեց JSON փաստաթղթերի հարցումներ կատարելու հնարավորությունը՝ օգտագործելով SQL/JSON ստանդարտում սահմանված JSON ուղու արտահայտությունները: Նման հարցումները կարող են օգտագործել JSONB ձևաչափով պահվող փաստաթղթերի ինդեքսավորման գոյություն ունեցող մեխանիզմները՝ տվյալների արդյունավետ առբերման համար:
Սեղանի ընդհանուր արտահայտությունները, որոնք նաև հայտնի են որպես WITH հարցումներ, այժմ կարող են ավտոմատ կերպով իրականացվել՝ օգտագործելով փոխարինումը PostgreSQL 12-ում, որն իր հերթին կարող է օգնել բարելավել բազմաթիվ առկա հարցումների կատարումը: Նոր տարբերակում WITH հարցման փոխարինման մասը կարող է իրականացվել միայն այն դեպքում, եթե այն ռեկուրսիվ չէ, չունի կողմնակի ազդեցություններ և հղում է կատարվում միայն մեկ անգամ հարցման հաջորդ մասում:
PostgreSQL 12-ը ներկայացնում է «գեներացված սյունակների» աջակցությունը: SQL ստանդարտում նկարագրված այս սյունակի տեսակը հաշվարկում է արժեքը՝ հիմնված նույն աղյուսակի այլ սյունակների բովանդակության վրա: Այս տարբերակում PostgreSQL-ն աջակցում է «պահպանված գեներացված սյունակները», որտեղ հաշվարկված արժեքը պահվում է սկավառակի վրա։
Միջազգայնացում
PostgreSQL 12-ն ընդլայնում է ICU համադրումների աջակցությունը՝ թույլ տալով օգտվողներին սահմանել «ոչ դետերմինիստական համադրումներ», որոնք կարող են, օրինակ, թույլ տալ մեծատառերի կամ շեշտադրումների նկատմամբ անզգայուն համեմատություններ:
Նույնականացմանը
PostgreSQL-ն ընդլայնում է իր աջակցությունը վավերացման ուժեղ մեթոդներին մի քանի բարելավումներով, որոնք ապահովում են լրացուցիչ անվտանգություն և ֆունկցիոնալություն: Այս թողարկումը ներկայացնում է հաճախորդի կողմից և սերվերի կողմից գաղտնագրումը GSSAPI ինտերֆեյսների միջոցով նույնականացման համար, ինչպես նաև PostgreSQL-ի՝ LDAP սերվերները հայտնաբերելու հնարավորությունը, երբ PostgreSQL-ը կազմվում է OpenLDAP-ով:
Բացի այդ, PostgreSQL 12-ն այժմ աջակցում է բազմագործոն նույնականացման տարբերակ: PostgreSQL սերվերն այժմ կարող է հաճախորդից պահանջել տրամադրել վավեր SSL վկայագիր՝ համապատասխան օգտվողի անունով՝ օգտագործելով clientcert=verify-full, և դա համատեղել նույնականացման առանձին մեթոդի պահանջի հետ (օրինակ՝ scram-sha-256):
Վարչակազմը
PostgreSQL 12-ը ներկայացրել է REINDEX CONCURRENTLY հրամանի միջոցով չարգելափակող ինդեքսների վերակառուցում կատարելու հնարավորությունը: Սա թույլ է տալիս օգտվողներին խուսափել DBMS-ի խափանումից ինդեքսի երկարատև վերակառուցման ժամանակ:
Բացի այդ, PostgreSQL 12-ում դուք կարող եք միացնել կամ անջատել էջի ստուգման գումարները անջատման կլաստերի մեջ՝ օգտագործելով pg_checksums հրամանը: Նախկինում էջի ստուգումների գումարները, մի հատկություն, որն օգնում է ստուգել սկավառակի վրա պահվող տվյալների ամբողջականությունը, կարող էր միացված լինել միայն այն ժամանակ, երբ PostgreSQL կլաստերը սկզբնավորվեր initdb-ի միջոցով:
Source: linux.org.ru