DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Database Zone»TOSS : un secret pour obtenir une cohérence éventuelle des bords dans Nebula Graph
    Database Zone

    TOSS : un secret pour obtenir une cohérence éventuelle des bords dans Nebula Graph

    novembre 17, 2021
    TOSS : un secret pour obtenir une cohérence éventuelle des bords dans Nebula Graph
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Nebula Graph vient de sortir la v.2.6. Dans cette version, TOSS est certainement l’une des fonctionnalités importantes. Ici, une explication détaillée sur TOSS sera donnée.

    Commençons par une déclaration GO

    Comme nous le savons tous, il existe deux types d’arêtes : les arêtes dirigées et les arêtes non orientées. Lorsque vous traversez des arêtes dirigées, vous pouvez traverser en avant ou en arrière. Nebula Graph prend également en charge cette sémantique. Par exemple:

    go from "101" over known reversely yield known.kdate, id($$);
    

    L’instruction ci-dessus commence à partir du sommet 101 pour rechercher tous les voisins correspondants à l’envers. Cependant, lorsque vous insérez une arête dans Nebula Graph, la commande sera :

    insert edge known(degree) VALUES "100" -> "101":(299792458);
    

    Apparemment, la déclaration ci-dessus ne spécifie que le bord sortant. En effet, Nebula Graph spécifiera le bord entrant en arrière-plan lorsque vous insérez un bord.

    Comment insérer une arête dans un graphique de nébuleuse

    Prendre la INSERT déclaration ci-dessus à titre d’exemple, le processus d’exécution en arrière-plan contient les éléments suivants :

    • Nebula Console envoie la requête INSERT au serveur Nebula Graph.

    • Une fois que le serveur Nebula Graph a reçu la demande, il ajoute un bord entrant pour chaque bord sortant et envoie AddEdgeRequest à leurs hôtes respectivement.

    • Une fois que l’hôte (serveur de stockage Nebula) a reçu AddEdgeRequest, il insère le bord localement (via le protocole Raft) et renvoie le résultat au serveur Nebula Graph.

    • Le serveur Nebula Graph renvoie ensuite les résultats des deux hôtes à la console Nebula à des fins d’interrogation.

    L’organigramme est le suivant :

    Résultats du serveur Nebula Graph

    Si vous êtes familier avec la programmation réseau/distribuée, vous pouvez voir le problème maintenant. Le service graphique utilise RPC pour appeler les deux services de stockage. Lorsque l’opération INSERT est exécutée suffisamment de fois, un RPC réussit tandis que l’autre échoue en raison du délai d’attente. En d’autres termes, un INSERT l’opération peut réussir sur le bord sortant tout en échouant sur le bord entrant.

    Désormais, si un utilisateur a besoin de paramètres de propriété cohérents pour le bord sortant et le bord entrant, le client doit réessayer la requête à l’infini. Il est inapproprié pour Nebula Graph, en tant que produit de base de données, de s’appuyer sur le client pour l’atomicité des données.

    Il apparaît alors un besoin d’assurer l’atomicité du bord sortant et du bord entrant. Cela signifie que le bord sortant et le bord entrant doivent être mis à jour avec succès ou échouer en même temps. Et TOSS (Transaction On Storage Side) est la fonctionnalité qui assure la cohérence éventuelle des bords sur INSERT, UPDATE, et UPSERT opérations.

    Comment utiliser TOSS

    Avec la sortie de Nebula Graph v2.6.0, la fonction TOSS a également été lancée. La fonctionnalité est définie sur Disabled par défaut pour des raisons de performances et de stabilité. Vous pouvez trouver le enable_experimental_feature dans le fichier de configuration du serveur Nebula Graph et définissez-la sur True. Ensuite, vous devez redémarrer le service graphd pour que la fonctionnalité prenne effet. La commande est la suivante :

    --enable_experimental_feature=true
    

    Puis les opérations CREATE SPACE / CREATE EDGE / INSERT / UPDATE permettra d’atteindre la cohérence éventuelle des arêtes dans Nebula Graph. (Il suffit d’exécuter les opérations comme précédemment).

    Remarque : la fonction TOSS ne sera appliquée aux données incrémentielles qu’une fois activée.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.