Maison > développement back-end > Golang > le corps du texte

Gremlin-Go : étapes d'arborescence non sérialisables

王林
Libérer: 2024-02-09 10:51:19
avant
991 Les gens l'ont consulté

Gremlin-Go : étapes darborescence non sérialisables

éditeur php Apple Gremlin-Go est un nouveau type de base de données distribuée qui utilise la technologie non sérialisable des étapes arborescentes pour fournir aux utilisateurs une solution de stockage et de traitement de données plus efficace et plus fiable. En stockant les données dans une structure arborescente et en utilisant des étapes non sérialisables pour lire et écrire des données, Gremlin-Go est capable de maintenir la cohérence et la fiabilité des données dans un environnement distribué. Ce concept de conception innovant fait de Gremlin-Go l'une des principales bases de données distribuées actuellement, offrant un support de données puissant aux entreprises de toutes tailles.

Contenu de la question

J'exécute une requête pour parcourir tous les bords "in" derrière une étiquette spécifique, plus tard j'effectuerai une requête similaire pour les bords "out". Je veux en faire un arbre car il peut y avoir un sommet avec plusieurs arêtes à parcourir et je dois le refléter dans mon client, donc je ne peux pas simplement utiliser tolist() ici.

J'utilise actuellement le SDK gremlin-go, mais j'obtiens une erreur de désérialisation lors de l'appel de l'étape tree(). Voici un extrait de mon code client :

    res, err := g.v(id).
        emit().
        repeat(__.in(label)).
        tree().
        next() // other terminal steps produce same issue
Copier après la connexion

Cela produira une erreur de désérialisation sur le type de données 0x2b qui est le type de données de base graphbinaire "arbre"

2023/02/28 12:23:05 Error occurred during operation gremlinServerWSProtocol.readLoop(): 'E0408: unknown data type to deserialize 0x2b'
2023/02/28 12:23:05 Read loop error 'E0408: unknown data type to deserialize 0x2b', closing read loop.
2023/02/28 12:23:05 Connection error callback invoked, closing protocol.
Copier après la connexion

La documentation de référence gremlin-go ne semble rien mentionner sur la prise en charge spécifique de la sérialisation. Selon le gremlin-go readme, il prend en charge tous les principaux types de données graphbinary. J'ai testé ma requête dans la console Gremlin pour vérifier la requête et le serveur : g.v(<id>).emit().repeat(__.in(<label>)).tree().next()</label></id>.

Pour un contexte supplémentaire, je développe localement contre gremlin-server:3.5.3 pour expérimenter dans le but de compléter des requêtes avec la prise en charge d'AWS Neptune. Je sais que ceux-ci ne sont pas complètement interchangeables et suivront la référence Neptune-gremlin. La dernière version de Neptune spécifie que la dernière version prise en charge de Gremlin est la 3.5.3.

Solution de contournement

En général, seul Java (et d'autres clients basés sur JVM) est capable de désérialiser des structures telles que des sous-graphes ou des arbres. En effet, ce sont les seuls clients Gremlin qui disposent d'implémentations natives des structures de données actuellement disponibles (par exemple, les clients JVM disposent de TinkerGraph).

C'est quelque chose que la communauté TinkerPop connaît très bien, et cela fait partie de la liste des choses qui méritent d'être améliorées.

Une solution de contournement possible (pas très agréable) consiste à utiliser un point de terminaison HTTP (envoyant la requête sous forme de texte) et à gérer le GraphSON renvoyé (si une telle structure de données doit être renvoyée).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!