Analyse du code source NebulaGraph

1. NebulaGraph

1.1 Architecture NebulaGraph

Nebula Graph est une base de données de graphes distribués open source. Nebula adopte une conception qui sépare le stockage et l'informatique pour découpler le stockage et l'informatique. Dans le même temps, en dehors du cœur de la base de données, nous fournissons également de nombreux outils périphériques, tels que l'importation de données, la surveillance, le déploiement, la visualisation, le calcul graphique, etc.
Pour la conception de Nebula, veuillez vous référer à "A Survey of Graph Databases and the Practice of Nebula in Graph Database Design".

La conception globale de l'architecture est illustrée dans la figure suivante :

insérez la description de l'image ici
Le moteur de requête adopte une conception sans état et peut facilement réaliser une expansion horizontale. Il est divisé en plusieurs parties principales, telles que l'analyse syntaxique, l'analyse sémantique, l'optimiseur et le moteur d'exécution.

Pour la conception détaillée, veuillez vous référer à « Query Engine Design of Graph Database » et « Introduction to Nebula Graph 2.0 Query Engine ».

La conception de l'architecture du moteur de requête est illustrée dans la figure suivante : Le
insérez la description de l'image ici
stockage se compose de deux parties, l'une est le stockage lié au méta, que nous appelons Meta Service, et l'autre est le stockage lié aux données, que nous appelons Storage Service.

Le service de stockage comporte trois couches : la couche inférieure est le moteur de magasin ; la couche supérieure est notre couche Consensus, qui implémente Multi Group Raft ; la couche supérieure est notre interface de stockage, qui définit une série d'API liées aux graphiques.

Pour une conception détaillée, veuillez vous référer à "Conception de stockage de la base de données de graphes".

La conception de l'architecture du moteur de stockage est illustrée dans la figure suivante :
insérez la description de l'image ici

2. Présentation du référentiel de code NebulaGraph

2.1. Description de l'adresse du code git de NebulaGraph

Bienvenue dans le référentiel de code vesoft (vesoft est le développeur de la base de données de graphes Nebula Graph).
https://github.com/vesoft-inc
L'architecture actuelle du produit Nebula comprend des noyaux de base de données graphiques, des clients, des outils, des frameworks de test, la compilation, la visualisation, la surveillance, etc.

Le but principal de cet article est de présenter brièvement la structure du code du Repo principal de Nebula Graph, et d'expliquer les fonctions de base de chaque module. Des instructions de conception plus détaillées suivront. J'espère aider les lecteurs de la communauté à mieux comprendre Nebula Graph et apporter leurs propres contributions à la communauté Nebula, telles que la soumission de fonctionnalités, la correction de bogues, la soumission de documents, etc.

La liste suivante répertorie la plupart des référentiels de code dans le référentiel vesoft-inc :

nebula : code du noyau de Nebula 1.0
nebula graph : moteur de requête Nebula 2.0
nebula storage : moteur de stockage Nebula 2.0
nebula common : kit d'outils du noyau Nebula 2.0
Nebula Clients
nebula-java : client Java
nebula-cpp : client CPP
nebula-go : client Go
nebula- python : Client Python
Nebula Tools
nebula-importer : Outil d'importation de données hautes performances basé sur le client Go
nebula-spark-utils : Outils de collecte Spark Connector, Exchange, Algorithme
nebula-br : Outil de sauvegarde et de
restauration nebula-ansible, nebula-operator : Outil de déploiement
Nebula Test
nebula-bench : projet de test de stress et de performance
nebula-chaos : projet de test Chaos
Compilation
nebula-third-party : le noyau de la base de données graphique Nebula Graph dépend de
packages
tiers graph-studio : outil de visualisation Nebula Graph

nébuleuse : NebulaGraph 2.6.0 ou version ultérieure

3. Structure du code et description du module

3.1 Structure du code Nebula–Graph

Le graphique, le stockage et le commun des versions 2.6.0 et supérieures se trouvent tous dans le même projet git
https://github.com/vesoft-inc/nebula.git
Ce diagramme de structure de code de projet :
insérez la description de l'image ici

src/clients/ : méta, implémentation CPP du
codec client de stockage/ :

src/daemons/ : processus principal du moteur de requête
src/interface/ : définition de l'interface des services de graphe, de méta et de stockage
kvstore/ :
tests d'implémentation de stockage KV distribués basés sur des radeaux/ : cadre de test d'intégration basé sur BDD, testant tous les Nebula Graph fournis
Analyseur de fonctions / : analyse lexicale, analyse syntaxique, :
maquette de définition de structure AST/ : quelques données fictives pour faciliter les
outils de débogage/ :
version/ :
service Web/ :

1. Structure du code graphique :

insérez la description de l'image ici
context/ : informations de contexte de la requête, y compris AST (arbre de syntaxe abstraite), plan d'exécution (plan d'exécution), résultats d'exécution et autres ressources liées à l'informatique.
executor/ : exécuteur, implémentation de chaque opérateur
optimiseur/ : implémentation RBO (optimisation basée sur des règles) et
planificateur de règles d'optimisation/ : opérateur et planificateur de génération de plan d'exécution
/ : planificateur pour
le service de plan d'exécution/ : couche de service du moteur de requête, qui fournit authentification et exécute la session d'interface de requête / : statistiques
de gestion de session
/ : statistiques d'exécution, telles que P99, statistiques de requête lente , etc. / : accesseur d'expression, utilisé pour extraire des informations d'expression ou optimiser


2. structure de code commune :
insérez la description de l'image ici

Le code du référentiel Nebula Common est une boîte à outils du code du noyau Nebula, fournissant des implémentations efficaces de certains outils courants. Je pense que certains kits d'outils communs doivent être familiers à tous les ingénieurs. Seuls les répertoires étroitement liés à la base de données de graphes sont décrits ici.
src/common/datatypes/ : Définition des types de données et des calculs dans Nebula Graph, tels que string, int, bool, float, Vertex, Edge, etc.
rc/common/expression/ : Définition des expressions dans nGQL
src/common/function/ : Définition des fonctions dans
nGQL 3.meta structure du code :
insérez la description de l'image ici
common/ :
http/ :
processors :
test/ :
updrade/ :

4. Structure du code de stockage :
insérez la description de l'image ici
admin/ :
context/ :
exec/ :
http/ :
index/ :
kv/ :
mutate/ :
query/ :
test/ :
transaction/ :

3.1.1 Explication des codes

processus de création de schéma

CreateSpaceProcessor —BaseProcessor–

Annexe :
Article de référence : https://nebula-graph.com.cn/posts/nebula-graph-source-code-reading-01/
https://blog.csdn.net/weixin_44324814/article/details/107808854?spm =1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-1.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-1 .pc_relevant_aa&utm_relevant_index=1

Je suppose que tu aimes

Origine blog.csdn.net/shuai809853150/article/details/124118366
conseillé
Classement