DBMS EdgeDB 2.0 реляциялык графиктин чыгарылышы

Татаал иерархиялык маалыматтар менен иштөө үчүн оптималдаштырылган реляциялык график маалыматтар моделин жана EdgeQL суроо тилин ишке ашырган EdgeDB 2.0 DBMS релиз сунушталды. Код Python жана Rust тилдеринде жазылган (талдоочу жана аткаруу үчүн критикалык бөлүктөрү) жана Apache 2.0 лицензиясынын алкагында таратылат. Долбоор PostgreSQL үчүн кошумча катары иштелип чыгууда. Кардар китепканалары Python, Go, Rust жана TypeScript/Javascript үчүн даярдалган. DBMS башкаруу жана интерактивдүү сурамдарды аткаруу (REPL) үчүн буйрук сабынын куралдарын камсыз кылат.

Таблицага негизделген маалымат моделинин ордуна, EdgeDB объекттин түрлөрүнө негизделген декларативдик системаны колдонот. Типтердин ортосундагы байланышты аныктоо үчүн чет өлкөлүк ачкычтардын ордуна шилтеме боюнча шилтеме колдонулат (бир объект башка объекттин менчиги катары колдонулушу мүмкүн).

type Person { талап кылынган касиеттин аты -> str; } type Movie { талап кылынган касиеттин аталышы -> str; multi-link actors -> Person; }

Суроолорду иштетүүнү тездетүү үчүн индекстер колдонулушу мүмкүн. Мүлктү күчтүү терүү, мүлктүн наркын чектөө, эсептелген касиеттер жана сакталган процедуралар сыяктуу функциялар да колдоого алынат. ORMди бир аз элестеткен EdgeDB объектисин сактоо схемасынын өзгөчөлүктөрүнө схемаларды аралаштыруу, ар кандай объекттердин касиеттерин шилтемелөө жана интеграцияланган JSON колдоосу кирет.

Схемалардын миграциясын сактоо үчүн орнотулган куралдар каралган - өзүнчө esdl файлында көрсөтүлгөн схеманы өзгөрткөндөн кийин, жөн гана "edgedb migration create" буйругун аткарыңыз жана СББС схемадагы айырмачылыктарды талдап, интерактивдүү түрдө схемага өтүү үчүн сценарийди жаратат. жаңы схема. Схеманы өзгөртүү тарыхы автоматтык түрдө көзөмөлдөнөт.

Сурамдарды түзүү үчүн GraphQL сурам тили да, иерархиялык маалыматтар үчүн SQLдин адаптацияланышы болгон менчик EdgeDB тили да колдоого алынат. Тизмелердин ордуна суроонун натыйжалары структураланган түрдө форматталат жана подсуроолор менен JOINдердин ордуна сиз бир EdgeQL сурамын башка суроонун ичинде туюнтма катары көрсөтө аласыз. Транзакциялар жана циклдер колдоого алынат.

Select Movie { title, actors: { name } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", актерлор := ( { 'Киану Ривз', 'Кэрри- Anne Moss', 'Laurence Fishburne' } ) } {0, 1, 2, 3} союздагы сан үчүн ( { сан, сан + 0.5 } ды тандаңыз );

Жаңы версияда:

  • Берилиштер базасын башкаруу үчүн камтылган веб-интерфейс кошулду, бул сизге маалыматтарды көрүү жана түзөтүү, EdgeQL сурамдарын жүргүзүү жана колдонулган сактоо схемасын талдоо мүмкүнчүлүгүн берет. Интерфейс "edgedb ui" буйругу менен ишке киргизилет, андан кийин ал localhostка кирүүдө жеткиликтүү болот.
    DBMS EdgeDB 2.0 реляциялык графиктин чыгарылышы
  • "ГРУППА" туюнтмасы ишке ашырылды, бул сизге ТАҢДАУ операциясындагы топтоого окшош каалаган EdgeQL туюнтмаларын колдонуу менен берилиштерди жана маалыматтарды бөлүштүрүүгө жана бириктирүүгө мүмкүндүк берет.
  • Объект деңгээлинде жеткиликтүүлүктү көзөмөлдөө мүмкүнчүлүгү. Кирүү эрежелери сактоо схемасынын деңгээлинде аныкталат жана алып келүү, киргизүү, жок кылуу жана жаңыртуу операцияларында объекттердин белгилүү бир топтомун колдонуу мүмкүнчүлүгүн чектөөгө мүмкүндүк берет. Мисалы, сиз авторго гана жарыялоону жаңыртууга уруксат берген эрежени кошо аласыз.
  • Сактоо схемасында глобалдык өзгөрмөлөрдү колдонуу мүмкүнчүлүгү кошулду. Жаңы глобалдык өзгөрмө current_user колдонуучуга туташтыруу үчүн сунушталды.
  • Маанилердин диапазондорун аныктаган типтерге колдоо кошулду.
  • Rust тили үчүн расмий кардар китепканасы даярдалды.
  • EdgeDB бинардык протоколу турукташтырылган, бул глобалдык өзгөрмөлөрдү жана локалдык абалдарды колдонуу менен бир эле тармактык туташуунун ичинде бир эле учурда бир нече түрдүү сеанстарды иштеп чыгууга, HTTP аркылуу жөнөтүүгө мүмкүндүк берет.
  • Розеткаларды активдештирүү үчүн колдоо кошулду, ал сервер иштеткичти эс тутумда калтырбоого жана аны туташуу орнотууга аракет кылганда гана иштетүүгө мүмкүндүк берет (иштеп чыгуучу системалардагы ресурстарды үнөмдөө үчүн пайдалуу).

Source: opennet.ru

Комментарий кошуу