La première version stable du SGBD à graphe relationnel EdgeDB

La première version stable du SGBD EdgeDB est disponible, qui est un module complémentaire à PostgreSQL avec l'implémentation du modèle de données de graphe relationnel et du langage de requête EdgeQL, optimisé pour travailler avec des données hiérarchiques complexes. Le code est écrit en Python et Rust et est distribué sous la licence Apache 2.0. Les bibliothèques clientes sont préparées pour Python, Go, Rust et TypeScript/Javascript. Fournit des outils de ligne de commande pour la gestion du SGBD et l'exécution de requêtes interactives (REPL).

Au lieu d'un modèle de données basé sur des tables, EdgeDB utilise un système déclaratif basé sur les types d'objets. Au lieu de clés étrangères, la liaison par référence est utilisée pour définir la relation entre les types (un objet peut être utilisé comme propriété d'un autre objet). tapez Person { nom de la propriété requis -> str; } tapez Movie { titre de propriété requis -> str; acteurs multi-liens -> Personne ; }

Les index peuvent être utilisés pour accélérer le traitement des requêtes. Des fonctionnalités telles que le typage de propriété fort, les restrictions de valeur de propriété, les propriétés calculées et les procédures stockées sont également prises en charge. Les fonctionnalités du schéma de stockage d'objets EdgeDB, qui rappelle quelque peu un ORM, incluent la possibilité de mélanger des schémas, de lier les propriétés de différents objets et la prise en charge JSON intégrée.

Des outils intégrés sont fournis pour stocker la migration de schéma - après avoir modifié le schéma spécifié dans un fichier esdl séparé, exécutez simplement la commande « edgedb migration create » et le SGBD analysera les différences dans le schéma et générera de manière interactive un script pour migrer vers le schéma. nouveau schéma. L’historique des modifications du schéma est automatiquement suivi.

Pour générer des requêtes, le langage de requête GraphQL et le langage propriétaire EdgeDB, qui est une adaptation de SQL pour les données hiérarchiques, sont pris en charge. Au lieu de listes, les résultats des requêtes sont formatés de manière structurée, et au lieu de sous-requêtes et de JOIN, vous pouvez spécifier une requête EdgeQL comme expression dans une autre requête. Les transactions et les cycles sont pris en charge. sélectionnez le film { titre, acteurs : { nom } } filtre .titre = "The Matrix" insérez le film { titre := "Les résurrections matricielles", acteurs := ( sélectionnez le filtre de personne .nom dans { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } pour le nombre dans l'union {0, 1, 2, 3} ( select { number, number + 0.5 } );

Source: opennet.ru

Ajouter un commentaire