Издаване на релационно-графова СУБД EdgeDB 2.0

Представен е релиз на СУБД EdgeDB 2.0, реализираща релационно-графовата модел на данни и езика за заявки EdgeQL, оптимизирани за работа с комплексни йерархични данни. Кодът е написан на езиците Python и Rust (парсер и критични за производителността компоненти) и се разпространява под лицензия Apache 2.0. Проектът се развива като надстройка над PostgreSQL. Клиентските библиотеки са подготвени за езиците Python, Go, Rust и TypeScript/Javascript. Предоставя се инструментарий за команден ред за управление на СУБД и интерактивно изпълнение на заявки (REPL).

Вместо таблична модел на данни, в EdgeDB се прилага декларативна система, основана на обектни типове. Вместо външни ключове (foreign key) за определяне на връзките между типовете, се използва свързване чрез референции (един обект може да бъде използван като свойство на друг обект).

type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

За ускорение на обработката на заявки могат да се използват индекси. Поддържат се също така възможности за строг типизация на свойства, ограничения на стойностите на свойства, изчисляеми свойства и съхранени процедури. От особеностите на обектната схема за съхранение на EdgeDB, която наподобява ORM, се отбелязва възможността за смесване на схеми, свързване на свойства от различни обекти и интегрирана поддръжка на JSON.

Предоставят се вградени инструменти за мигриране на схемата за съхранение — след промени в схемата, зададена в отделен esdl-файл, е достатъчно да се изпълни командата «edgedb migration create» и СУБД ще анализира разликите в схемата и в интерактивен режим ще генерира скрипт за преминаване към новата схема. Автоматично се проследява историята на промените в схемата.

За формулиране на заявки се поддържа както езикът за заявки GraphQL, така и собственият език EdgeDB, който представлява адаптация на SQL за йерархични данни. Вместо списъци, резултатите от заявките се представят в структурирана форма, а вместо подзаявки и операции JOIN, се предоставя възможност за указване на една заявка EdgeQL като израз в друга заявка. Поддържат се транзакции и цикли.

избери Филм { заглавие, актьори: { име } } филтър .заглавие = «Матрицата» добави Филм { заглавие := «Матрицата: Възкресения», актьори := ( избери Лице филтър .име в { ‘Киану Рийвс’, ‘Кари-Ан Мос’, ‘Лорънс Фишбърн’ } ) } за номер в {0, 1, 2, 3} обединение ( избери { номер, номер + 0.5 } );

В новата версия:

  • Добавен е вграден уеб интерфейс за администриране на БД, позволяващ преглед и редактиране на данни, изпълнение на запитвания EdgeQL и анализ на приложената схема на съхранение. Интерфейсът се стартира с командата «edgedb ui», след което става достъпен при достъп до localhost.
    Издаване на релационно-графова СУБД EdgeDB 2.0
  • Реализирано е изражение «GROUP», позволяващо секциониране и агрегация на данни и извършване на групиране на данни по произволни изрази EdgeQL в аналогия с групирането в операция SELECT.
  • Възможност за управление на достъпа на ниво обекти. Правилата за достъп се определят на ниво схема на съхранение и позволяват ограничаване на възможността за използване на определен набор от обекти в операции по извличане, добавяне, изтриване и обновяване. Например, може да се добави правило, което позволява обновяване на публикацията само от автора.
  • Добавена е възможността за използване на глобални променливи в схемата на съхранение. Новата глобална променлива current_user е предложена за свързване с потребителя.
  • Добавена е поддръжка за типове, определящи диапазони от стойности (range).
  • Подготвена е официалната клиентска библиотека за езика Rust.
  • Стабилизиран е бинарният протокол EdgeDB, в който е добавена възможността за обработка на няколко различни сесии едновременно в рамките на едно мрежово свързване, проброс чрез HTTP, използване на глобални променливи и локални състояния.
  • Добавена е поддръжка за активиране по сокет, позволяваща да не се държи сървърният обработчик в паметта и да се стартира само при опит за установяване на свързване (полезно за икономия на ресурси на системите на разработчиците).

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster