Հարաբերական գրաֆիկի թողարկում DBMS EdgeDB 2.0

Ներկայացված է EdgeDB 2.0 DBMS-ի թողարկումը, որն իրականացնում է հարաբերական գրաֆիկի տվյալների մոդելը և EdgeQL հարցումների լեզուն՝ օպտիմիզացված բարդ հիերարխիկ տվյալների հետ աշխատելու համար: Կոդը գրված է Python-ով և Rust-ով (վերլուծիչ և կատարման համար կարևոր մասեր) և տարածվում է Apache 2.0 լիցենզիայի ներքո: Նախագիծը մշակվում է որպես հավելում PostgreSQL-ի համար: Հաճախորդի գրադարանները պատրաստված են Python-ի, Go-ի, Rust-ի և TypeScript/Javascript-ի համար: Տրամադրում է հրամանի տող գործիքներ DBMS կառավարման և ինտերակտիվ հարցումների կատարման համար (REPL):

Սեղանի վրա հիմնված տվյալների մոդելի փոխարեն EdgeDB-ն օգտագործում է դեկլարատիվ համակարգ՝ հիմնված օբյեկտների տեսակների վրա: Արտասահմանյան ստեղների փոխարեն հղումը հղումով օգտագործվում է տեսակների միջև կապը սահմանելու համար (մի օբյեկտ կարող է օգտագործվել որպես մեկ այլ օբյեկտի հատկություն):

տեսակ Անձ { պահանջվող գույքի անվանում -> փող; } type Movie { պահանջվող սեփականության անվանումը -> str; բազմակի կապող դերասաններ -> Անձ; }

Ինդեքսները կարող են օգտագործվել հարցումների մշակումն արագացնելու համար: Աջակցվում են նաև այնպիսի գործառույթներ, ինչպիսիք են գույքի ուժեղ մուտքագրումը, գույքի արժեքի սահմանափակումները, հաշվարկված հատկությունները և պահվող ընթացակարգերը: EdgeDB օբյեկտների պահպանման սխեմայի առանձնահատկությունները, որոնք ինչ-որ չափով հիշեցնում են ORM-ը, ներառում են սխեմաները խառնելու, տարբեր օբյեկտներից կապելու հատկություններ և ինտեգրված JSON աջակցություն:

Ներկառուցված գործիքները տրամադրվում են սխեմայի միգրացիան պահելու համար. առանձին esdl ֆայլում նշված սխեման փոխելուց հետո պարզապես գործարկեք «edgedb migration create» հրամանը և DBMS-ը կվերլուծի սխեմայի տարբերությունները և ինտերակտիվ կերպով կստեղծի սկրիպտ՝ միգրացիայի համար: նոր սխեմա. Սխեմայի փոփոխությունների պատմությունը ավտոմատ կերպով հետևվում է:

Հարցումներ ստեղծելու համար աջակցվում են և՛ GraphQL հարցումների լեզուն, և՛ սեփական EdgeDB լեզուն, որը SQL-ի հարմարեցումն է հիերարխիկ տվյալների համար: Ցուցակների փոխարեն հարցումների արդյունքները ձևաչափվում են կառուցվածքային ձևով, և ենթհարցերի և JOIN-ների փոխարեն կարող եք նշել մեկ EdgeQL հարցում՝ որպես արտահայտություն մեկ այլ հարցման մեջ: Գործարքներն ու ցիկլերը աջակցվում են:

ընտրել Ֆիլմ { վերնագիր, դերասաններ՝ {անուն } } ֆիլտր .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", դերասաններ := ( ընտրել Person filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } համարի համար {0, 1, 2, 3} միավորում (ընտրեք {համար, թիվ + 0.5 } );

Նոր տարբերակում.

  • Տվյալների բազայի կառավարման համար ավելացվել է ներկառուցված վեբ ինտերֆեյս, որը թույլ է տալիս դիտել և խմբագրել տվյալները, գործարկել EdgeQL հարցումները և վերլուծել օգտագործված պահեստավորման սխեման: Ինտերֆեյսը գործարկվում է «edgedb UI» հրամանով, որից հետո այն հասանելի է դառնում localhost մուտք գործելիս:
    Հարաբերական գրաֆիկի թողարկում DBMS EdgeDB 2.0
  • «GROUP» արտահայտությունը ներդրվել է, որը թույլ է տալիս բաժանել և համախմբել տվյալները և խմբավորել կամայական EdgeQL արտահայտությունները, որոնք նման են SELECT գործողության մեջ խմբավորմանը:
  • Օբյեկտի մակարդակում հասանելիությունը վերահսկելու ունակություն: Մուտքի կանոնները սահմանվում են պահեստավորման սխեմայի մակարդակում և թույլ են տալիս սահմանափակել օբյեկտների որոշակի հավաքածու օգտագործելու հնարավորությունը առբերման, տեղադրման, ջնջման և թարմացման գործողություններում: Օրինակ, դուք կարող եք ավելացնել կանոն, որը թույլ է տալիս միայն հեղինակին թարմացնել հրապարակումը:
  • Ավելացվել է պահեստավորման սխեմայում գլոբալ փոփոխականներ օգտագործելու հնարավորություն: Առաջարկվել է նոր գլոբալ ընթացիկ_user փոփոխական՝ օգտատիրոջը կապելու համար:
  • Ավելացվեց աջակցություն այն տեսակների համար, որոնք սահմանում են արժեքների միջակայքերը:
  • Պատրաստվել է Rust լեզվի պաշտոնական հաճախորդների գրադարանը:
  • EdgeDB երկուական արձանագրությունը կայունացվել է, ինչը հնարավորություն է տալիս միաժամանակ մշակել մի քանի տարբեր նիստեր միևնույն ցանցային կապի շրջանակներում՝ փոխանցելով HTTP-ի միջոցով, օգտագործելով գլոբալ փոփոխականներ և տեղական վիճակներ:
  • Ավելացվել է վարդակների ակտիվացման աջակցություն, որը թույլ է տալիս չպահել սերվերի կառավարիչը հիշողության մեջ և գործարկել այն միայն կապ հաստատելիս (օգտակար է ծրագրավորողների համակարգերում ռեսուրսները խնայելու համար):

Source: opennet.ru

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