Доповідь підготував:
студент 2-го курсу, групи ІМ-21 Владислав ТОКАР [Пошта: vladyulik@ukr.net, Телеграм]
Майже всі сучасні інформаційні продукти так чи інакше використовують бази даних. MySQL, PostgreSQL, MongoDB — кожен розробник чув про ці класичні варіанти. Але все довкола стрімко розвивається, в тому числі і бази даних. Саме тому ця доповідь про EdgeDB, яку можна сміливо вважати інноваційною у цій сфері.
EdgeDB виникла як open-source об'єктно-реляційна база даних. Перша її версія була опублікована доволі недавно, а саме у квітні 2018 року. З того часу була додана величезна кількість фіч, найкращими з яких вважають повноцінний графічний інтерфейс та хмарну технологію EdgeDB Cloud. Наразі для цієї бази даних вже доступна версія 4.0, функціонал якої явно не уступає популярним конкурентам.
Основним недоліком класичних сьогодні варіантів є те, що вони не вирішують проблему неспівпадіння між об'єктно-орієнтованими мовами програмування та реляційними базами даних. Це явище ще називають "об'єктно-реляційною неузгодженістю". Але тут з’являється EdgeDB, яка впроваджує об'єктно-графову модель: дані описуються та зберігаються як сильно типізовані об'єкти та зв'язки між ними, що значно спрощує життя розробникам, яким легше сприймати дані у вигляді об’єктів, а не таблиць.
- Має власну мову запитів EdgeQL, яка за функціоналом не поступається SQL, але при цьому є більш простою для розуміння та усуває JOIN 🤯
select Movie {
title,
actors: {
name
},
rating := math::mean(.reviews.score)
} filter "Vladjubra" in .actors.name;
|
SELECT
title,
Actors.name AS actor_name,
(SELECT avg(score)
FROM Movie_Reviews
WHERE movie_id = Movie.id) AS rating
FROM
Movie
LEFT JOIN Movie_Actors ON
Movie.id = Movie_Actors.movie_id
LEFT JOIN Person AS Actors ON
Movie_Actors.person_id = Person.id
WHERE
'Vladjubra' IN (
SELECT Person.name
FROM
Movie_Actors
INNER JOIN Person
ON Movie_Actors.person_id = Person.id
WHERE
Movie_Actors.movie_id = Movie.id) |
| EdgeQL |
SQL |
-
Підтримує TypeScript & JavaScript, Python, Go, .NET, Dart, Deno, Rust, Java та Elixir
-
Усуває потребу в додаткових інструментах, таких як ORM
-
Має універсальний CLI, який дозволяє створювати нові бази даних, застосовувати схеми міграцій, запускати вбудований графічний інтерфейс та виконувати безліч інших дій
-
Включає в себе EdgeDB Cloud — повністю керований та легкий у використанні хмарний сервіс, який дозволяє миттєво розгортати бази даних та підключатися до них з будь-якого місця
-
Включає в себе велику та різноманітну бібліотеку стандартних типів, функцій та операторів
-
Має повністю відкритий код, який включає в себе ядро бази даних, клієнтські бібліотеки, інтерфейс командного рядка та багато інших сервісів
-
Є надзвичайно швидкою та оптимізованою
|
| Порівняння EdgeDB з іншими популярними варіантами |
-
Володіє унікальною здатністю до автоматичної міграції бази даних, що полегшує процес розвитку проєктів та зберігає стабільність в роботі
-
Має розширену підтримку JSON, яка дозволяє легко працювати з JSON-структурами в запитах
-
Має явну обробку дат та часу, яка не супроводжується неоднозначністю
-
Розроблена таким чином, щоб легко справлятися з великими обсягами даних та високими навантаженнями, що робить її ідеальним вибором для проєктів, які розвиваються та розширюються з часом.
-
Має вбудовану систему безпеки, яка включає механізми контролю доступу та аутентифікації, що забезпечуть високий рівень захисту даних
-
Базується на PostgreSQL
-
Підтримує GraphQL
EdgeDB — це не просто ще одна база даних. Це інноваційна технологія вирішення проблеми об'єктно-реляційного неузгодження, яка, окрім цього, пропонує високорівневий інтерфейс для роботи з даними, забезпечує зручність і продуктивність, має інтеграційну платформу, асинхронне ядро, продуману графо-реляційну модель та інші інновації. Все це робить її неймовірно потужним і перспективним інструментом для розробників.
Windows: iwr https://ps1.edgedb.com -useb | iex
Linux and macOS: curl --proto '=https' --tlsv1.2 -sSf https://sh.edgedb.com | sh
edgedb project init
edgedb migration create
edgedb migration apply
edgedb ui


