Qu'est-ce que UQL
Ultipa Graph Query Language, ou UQL, est un langage de requête et de gestion haute performance exclusif à la base de données Ultipa Graph et au moteur de calcul Graph.
UQL prend en charge l'insertion, la suppression et la mise à jour des métadonnées, la requête des données de graph (métadonnées, paths et sous-graphs), la gestion de graphset, le schema, les properties, l'index, le process et la tâche, l'utilisateur, privilège et politique, et d'autres fonctionnalités au sein du système Ultipa Graph.
UQL peut être invoqué via Ultipa CLI (outil de ligne de commande), Ultipa Manager (une interface de requête et de gestion de base de données hautement visualisée), Ultipa Drivers (Ultipa SDKs et APIs), et Visual Studio Code.
Comment UQL Fonctionne
Lorsqu'une instruction UQL formatée est envoyée au serveur Ultipa, elle subit une analyse et une optimisation avant d'être affectée au moteur de calcul graph haute performance pour exécution. Le résultat de la requête est ensuite traité, assemblé et finalement retourné à l'utilisateur.
Comment UQL est Conçu
La conception de UQL repose sur une compréhension profonde des graphs et des exigences de l'industrie pour des systèmes de graph évolutifs. Il embrasse une logique d'assemblage sémantique qui reflète les processus cognitifs du cerveau humain, le rendant facile à lire, écrire et apprendre.
UQL vs. SQL
UQL résout naturellement les limitations de SQL dans l'expression de données à haute dimension et ses combinaisons, ainsi que la complexité et l'inefficacité du filtrage de path. Il aborde également les défis associés à la compréhension et à la maintenance du code.
Comme la plupart des langages de base de données, UQL englobe des fonctionnalités pour DQL, DDL, DML et DCL:
- DQL (Data Query Language): Récupérer des données telles que nodes, edges, paths et sous-graphs de la base de données graph.
- DDL (Data Definition Language): Définir la structure du graph (schema et properties), créer des indexes, etc.
- DML (Data Manipulation Language): Ajouter, modifier et supprimer des données et d'autres contenus au sein du graphset.
- DCL (Data Control Language): Gérer l'accès à la base de données et à ses objets, accordant ou révoquant des autorisations aux utilisateurs pour des opérations spécifiques.
En tant que langage de requête graph, UQL s'aligne sur la norme internationale GQL en termes de fonctionnalité et de compatibilité globales. Le développement de la norme GQL est dirigé par LDBC (Linked Data Benchmark Council) et devrait être publié en 2024.
Ultipa est membre de LDBC et a été activement impliqué dans le développement de la norme GQL. index-1i9q251ak.js:2 ## Composants UQL
Voici un exemple d'une instruction UQL :
n({_id == "CA001"}).e({time > prev_e.time})[3].n(as target)
group by target.level
with count(target) as quantity
order by quantity desc
return target.level, quantity limit 10
Ce qui contient,
- Clause enchaînée : Elle suit le style de
[command].[method].[method]...
, comme n(...).e(...)[3].n(...). Cette clause est couramment utilisée pour récupérer des données du graph ou exécuter des insertions, mises à jour ou suppressions. - Clause Mot-clé : Elle commence par un mot-clé comme group by, with, order by, return et limit. Cette clause est utilisée pour traiter, assembler ou retourner les résultats.
- Alias personnalisé : Définie avec le mot-clé as, comme on le voit dans l'exemple avec target et quantity. Ces alias sont utilisés pour stocker et transférer des résultats temporaires entre les clauses.
- Alias système : Utilisé sans définition, comme démontré avec prev_e dans l'exemple. Ces alias peuvent stocker et transférer des résultats temporaires au sein d'une clause.
- Fonction : Utilisée pour effectuer divers calculs sur les résultats temporaires. Une fonction doit être appliquée au sein d'une clause, comme illustré par count(...) dans l'exemple.
UQL prend en charge le caractère d'échappement
\
, la tabulation\t
, le retour chariot\r\n
, et les délimiteurs de commentaires//
,/*
et*/
. index-1i9q251ak.js:2 ## Journal des modifications (v4.3 → v4.4)
Mises à jour du serveur
- Optimisation du stockage en mémoire, réduisant l'utilisation mémoire des données jusqu'à 33%
Nouvelles fonctionnalités
- Introduction d'un nouveau type de données graph GRAPH.
- Ajout de nouvelles fonctions d'agrégation
percentileCont()
etpercentileDisc()
. - Ajout d'une nouvelle fonction de conversion de type
toGraph()
. - Ajout d'une nouvelle clause SET.
Modifications
- Renomme la commande de requête
graph()
ensubgraph()
Le UQL (Ultipa Query Language) est créé et conçu par l'équipe Ultipa.
Licence de la documentation : Creative Commons 4.0