La version 3.2 du SGBD open source Nebula Graph a été publiée, destinée à un stockage efficace de grands ensembles de données interconnectées formant un graphe pouvant contenir des milliards de nœuds et des trillions de liens. Le projet est écrit en C++ et est distribué sous la licence Apache 2.0. Des bibliothèques clientes pour interagir avec le SGBD sont disponibles pour les langages Go, Python et Java.
Le SGBD adopte une architecture distribuée sans partage de ressources (shared-nothing), ce qui implique l'exécution de processus de traitement de requêtes graphd et de stockage storaged autonomes et indépendants. Le méta-service gère l'orchestration du déplacement des données et fournit des méta-informations sur le graphe. Un protocole basé sur l'algorithme RAFT est utilisé pour garantir la cohérence des données.
Les principales caractéristiques de Nebula Graph :
- La sécurité est assurée par un accès réservé uniquement aux utilisateurs authentifiés, dont les autorisations sont définies par un système de gestion des accès basé sur les rôles (RBAC).
- Il est possible de connecter différents types de moteurs de stockage. Le support de l'extension du langage de requêtes avec de nouveaux algorithmes est également inclus.
- Il est important de garantir des latences minimales lors de la lecture ou de l'écriture des données, tout en maintenant une bande passante élevée. Lors des tests sur un cluster composé d'un nœud graphd et de trois nœuds storaged avec une base de données de 632 Go, comprenant un graphe de 1,2 milliard de sommets et 8,4 milliards d'arêtes, les latences étaient à quelques millisecondes, et la bande passante atteignait jusqu'à 140 000 requêtes par seconde.
- Scalabilité linéaire.
- Un langage de requête semblable à SQL, suffisamment puissant et simple à comprendre. Support des opérations telles que GO (parcours bidirectionnel des sommets du graph), GROUP BY, ORDER BY, LIMIT, UNION, UNION DISTINCT, INTERSECT, MINUS, PIPE (utilisation du résultat de la requête précédente). Support des indices et des variables définies par l'utilisateur.
- Assurer une haute disponibilité et une résistance aux pannes.
- Support pour la création de snapshots avec un instantané de l'état de la base de données pour simplifier la création de sauvegardes.
- Prêt à l'industrie (déjà utilisé dans l'infrastructure de sociétés comme JD, Meituan et Xiaohongshu).
- Possibilité de modifier le schéma de stockage et de mettre à jour les données sans interrompre ou affecter les opérations en cours.
- Support TTL to limit the lifetime of data.
- Commands to manage settings and storage hosts.
- Tools for job management and scheduling (currently supporting COMPACT and FLUSH).
- Operations for finding the full path and shortest path between specified vertices.
- OLAP interface for integration with third-party analytics platforms.
- Utilities for importing data from CSV files or from Spark.
- Exportation de métriques pour le monitoring à l'aide de Prometheus et Grafana.
- Interface web Nebula Graph Studio pour visualiser les opérations sur le graphe, naviguer dans le graphe, concevoir le schéma de stockage et charger des données.
Dans cette nouvelle version :
- Ajout de la prise en charge de la fonction extract() pour extraire une sous-chaîne correspondant à une expression donnée.
- Les paramètres dans le fichier de configuration ont été optimisés.
- Des règles d'optimisation pour supprimer l'opérateur inutile AppendVertices et désactiver l'application de filtres sur les arêtes et les sommets ont été ajoutées.
- La quantité de données copiées pour l'opération JOIN a été réduite, ainsi que pour les opérateurs Traverse et AppendVertices.
- La performance de SHORTEST PATH et SUBGRAPH a été optimisée.
- Distribution de la mémoire améliorée (utilisation de l'Arena Allocator).
Source : opennet.ru
