EdgeDB, графова реляційна СУБД даних

Останнім часом анонсовано випуск СУБД «EdgeDB 2.0», який реалізує реляційну графову реляційну модель даних і мову запитів EdgeQL, оптимізовану для роботи зі складними ієрархічними даними.

EdgeDB — це база даних з відкритим кодом, розроблена як духовний наступник SQL і реляційної парадигми. Його мета полягає в тому, щоб вирішити деякі складні проблеми проектування, які роблять існуючі бази даних надмірно обтяжливими для використання.

Завдяки механізму запитів Postgres під капотом EdgeDB сприймає схему так само, як і ви: як об’єкти з властивостями, пов’язаними зв’язками. Це як реляційна база даних з об’єктно-орієнтованою моделлю даних або графова база даних із строгою схемою. Ми називаємо це реляційною базою даних графів.

Про EdgeDB

Проект розробляється як плагін для PostgreSQL. Клієнтські бібліотеки підготовлені для мов Python, Go, Rust і TypeScript/Javascript.

Замість табличної моделі даних EdgeDB використовує декларативну систему на основі типів об’єктів. Замість зовнішніх ключів (foreign key) для визначення зв'язку між типами використовується посилальна прив'язка (об'єкт може використовуватися як властивість іншого об'єкта).

Індекси можна використовувати для прискорення обробки запитів. Також підтримуються такі функції, як чітка типізація властивостей, обмеження значення властивості, обчислені властивості та збережені процедури. Деякі функції схеми зберігання об’єктів EdgeDB, дещо нагадують ORM, включають можливість змішувати схеми, зв’язувати властивості різних об’єктів і підтримку вбудованого JSON.

Для міграції надаються вбудовані інструменти схема зберігання: після зміни схеми, зазначеної в окремому файлі esdl, просто запустіть команду «edgedb migration create», і СУБД проаналізує відмінності в схемі та згенерує сценарій в інтерактивному режимі. щоб перейти на нову схему. Історія змін схеми відстежується автоматично.

Для запитів як мова запитів GraphQL, так і як власну мову EdgeDB, яка є адаптацією SQL для ієрархічних даних. Замість списків результати запиту мають структурований формат, а замість підзапитів і JOIN запит EdgeQL можна вказати як вираз в іншому запиті. Підтримуються транзакції та цикли.

Основні нові можливості EdgeDB 2.0

У представленій новій версії додано інтегрований веб-інтерфейс для адміністрування бази даних дозволяє переглядати та редагувати дані, виконувати запити EdgeQL і проаналізуйте використану схему зберігання. Інтерфейс запускається за допомогою команди «edgedb ui», після чого він стає доступним через локальний хост.

Вираз "GROUP" було реалізовано, щоб дозволити розділення та агрегування даних і групування даних за допомогою довільних виразів EdgeQL, подібно до групування в операції SELECT.

Можливість контролю доступу на рівні об'єкта, правила доступу визначені на рівні схеми зберігання та дозволяють обмежити використання певного набору об’єктів в операціях вибору, вставки, видалення та оновлення. Наприклад, ви можете додати правило, яке дозволяє лише автору оновлювати публікацію.

Також підкреслюється, що додана можливість використання глобальних змінних у схемі зберігання. Для прив’язки до користувача запропоновано нову глобальну змінну.

З інших змін, які виділяються:

  • Підготовлено офіційну клієнтську бібліотеку для мови Rust.
  • Двійковий протокол EdgeDB стабілізовано, в якому стало можливим одночасно обробляти кілька різних сеансів в межах одного мережевого підключення, пересилання через HTTP, використання глобальних змінних і локальних станів.
  • Додана підтримка типів, що визначають діапазони значень (range).
  • Додана підтримка активації сокетів, яка дозволяє не зберігати драйвер сервера в пам’яті та запускати його лише під час спроби встановити з’єднання (корисно для економії ресурсів у системах розробки).

В кінці кінців для тих, кому цікаво дізнатись більше про це, вони повинні знати, що код написаний на Python і Rust і випущений під ліцензією Apache 2.0.

Ви можете дізнатися більше про це на наступне посилання.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.