מעלדונג פון די ריליישאַנאַל גראַפיק DBMS EdgeDB 2.0

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

אַנשטאָט אַ טיש-באזירט דאַטן מאָדעל, EdgeDB ניצט אַ דעקלאַראַטיווע סיסטעם באזירט אויף כייפעץ טייפּס. אַנשטאָט פרעמד שליסלען, פֿאַרבינדונג דורך דערמאָנען איז געניצט צו דעפינירן די שייכות צווישן טייפּס (איין כייפעץ קענען זיין געוויינט ווי אַ פאַרמאָג פון אן אנדער כייפעץ).

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

ינדעקסיז קענען ווערן גענוצט צו פאַרגיכערן אָנפֿרעג פּראַסעסינג. פֿעיִקייטן אַזאַ ווי שטאַרק פאַרמאָג טייפּינג, פאַרמאָג ווערט ריסטריקשאַנז, קאַמפּיוטאַד פּראָפּערטיעס און סטאָרד פּראָוסידזשערז זענען אויך געשטיצט. פֿעיִקייטן פון די EdgeDB אַבדזשעקץ סטאָרידזש סכעמע, וואָס איז עפּעס רעמאַניסאַנט פון אַן ORM, אַרייַננעמען די פיייקייט צו מישן סטשעמאַס, פֿאַרבינדונג פּראָפּערטיעס פון פאַרשידענע אַבדזשעקץ און ינאַגרייטיד JSON שטיצן.

געבויט-אין מכשירים זענען צוגעשטעלט פֿאַר סטאָרינג סטשעמאַ מיגראַטיאָן - נאָך טשאַנגינג די סטשעמאַ ספּעסיפיעד אין אַ באַזונדער esdl טעקע, נאָר לויפן די "edgedb migration create" באַפֿעל און די DBMS וועט אַנאַלייז די דיפעראַנסיז אין די סטשעמאַ און ינטעראַקטיוולי דזשענערייט אַ שריפט פֿאַר מייגריישאַן צו די סטשעמאַ. נייַ סכעמע. די געשיכטע פון ​​סטשעמאַ ענדערונגען איז אויטאָמאַטיש טראַקט.

צו דזשענערייט פֿראגן, ביידע די GraphQL אָנפֿרעג שפּראַך און די פּראַפּרייאַטערי EdgeDB שפּראַך, וואָס איז אַן אַדאַפּטיישאַן פון SQL פֿאַר כייעראַרקאַקאַל דאַטן, זענען געשטיצט. אַנשטאָט פון רשימות, אָנפֿרעג רעזולטאַטן זענען פאָרמאַטטעד אין אַ סטראַקטשערד וועג, און אַנשטאָט פון סובקוועריז און JOINs, איר קענען ספּעציפיצירן איין EdgeQL אָנפֿרעג ווי אַן אויסדרוק אין אן אנדער אָנפֿרעג. טראַנזאַקשאַנז און סייקאַלז זענען געשטיצט.

select Movie { title, actors: { name } } filter .title = «The Matrix» insert Movie { title := «The Matrix Resurrections», actors := ( select Person filter .name in { ‘Keanu Reeves’, ‘Carrie-Anne Moss’, ‘Laurence Fishburne’ } ) } for number in {0, 1, 2, 3} union ( select { number, number + 0.5 } );

אין די נייַע ווערסיע:

  • Добавлен встроенный web-интерфейс для администрирования БД, позволяющий просматривать и редактировать данные, выполнять запросы EdgeQL и анализировать применяемую схему хранения. Интерфейс запускается командой «edgedb ui», после выполнения которой становится доступен при обращении к localhost.
    מעלדונג פון די ריליישאַנאַל גראַפיק DBMS EdgeDB 2.0
  • Реализовано выражение «GROUP», позволяющее секционировать и агрегировать данные и выполнять группировку данных по произвольным выражениям EdgeQL по аналогии с группировкой в операции SELECT.
  • Возможность управления доступом на уровне объектов. Правила доступа определяются на уровне схемы хранения и позволяют ограничить возможность использования определённого набора объектов в операциях выборки, вставки, удаления и обновления. Например, можно добавить правило, разрешающее обновление публикации только автору.
  • Добавлена возможность использования глобальных переменных в схеме хранения. Для привязки к пользователю предложена новая глобальная переменная current_user.
  • Добавлена поддержка типов, определяющих диапазоны значений (range).
  • Подготовлена официальная клиентская библиотека для языка Rust.
  • Стабилизирован бинарный протокол EdgeDB, в котором появилась возможность обработки одновременно нескольких разных сеансов в рамках одного сетевого соединения, проброса через HTTP, использования глобальных переменных и локальных состояний.
  • Добавлена поддержка активации по сокету, позволяющая не держать серверный обработчик в памяти и запускать его только при попытке установки соединения (полезно для экономии ресурсов на системах разработчиков).

מקור: opennet.ru

לייגן אַ באַמערקונג