Étapes détaillées d’installation et d’utilisation de Gremlin

Gremlin est un outil de requête de base de données graphique. Notez qu'il s'agit simplement d'un outil similaire à dbeaver, navicat et sqlyog. C'est un outil spécifiquement conçu pour analyser les bases de données graphiques.

télécharger

Adresse de téléchargementMiroirs de téléchargement Apache

Pour éviter les ennuis, vous pouvez directement

wget   https://www.apache.org/dyn/closer.lua/tinkerpop/3.5.1/apache-tinkerpop-gremlin-console-3.5.1-bin.zip

décompresser

décompresser apache-tinkerpop-gremlin-console-3.5.1-bin.zip 

Modifier le fichier de configuration

Il y a remote-secure.yaml ici lui-même et peut être modifié directement, mais ce n'est pas recommandé. , l'un de ces yaml correspond à une connexion à une base de données. Nous en créons directement une nouvelle et copions le contenu suivant.

vim distant-secure-test.yaml 

# hosts L'adresse intranet vip de l'instance KonisGraph de la base de données graphique, telle que 10.xx.xx.107
hosts : [10.xx.xx.107]
# port Port Gremlin de l'instance KonisGraph de la base de données graphique, telle que
Port 8186
 : 8186 # nom d'utilisateur/mot de passe Le compte et le mot de passe de l'instance KonisGraph de la base de données graphique, tels que compte : steven, mot de passe : test-pwd-123 nom d'utilisateur : steven mot de passe : test
-
pwd-123
connectionPool : {   enableSsl : false ,   sslEnabledProtocols : [TLSv1.2] } # sérialiseur : { className : org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config : { serializeResultToString : true }} sérialiseur : { className : org.apache.tinkerpop.gremlin. driver.ser.GraphSONMessageSerializerV3d0, configuration : {sérializeResultToString : true, useMapperFromGraph : graph }}



Notez que activateSsl: false, celui que j'ai copié auparavant, est vrai et continue de signaler les erreurs.

Le sérialiseur a également changé.

démarrer

bash ${gremlin_home}/bin/gremlin.sh

Entrée de la console

 : connexion à distance tinkerpop.server conf/remote-secure-test.yaml

A cette époque, le démarrage est réussi.

Vous pouvez également utiliser ce package pour window. La seule différence est que gremlin.bat est démarré.

 Parce qu'il n'y a pas beaucoup d'articles sur Gremlin, de nombreux grands ignorent les novices. Laissez-moi vous expliquer à quoi vous devez prêter attention.

Par exemple, MySQL, je veux simplement expérimenter quelques expériences de base telles que Select * Where Group Limit. Dois-je télécharger une bibliothèque MySQL, puis télécharger un Navicat ou un Dbeaver.

Gremlin a une bibliothèque intégrée (c'est ce que je comprends, et elle peut être facilement utilisée).

Connectez-vous localement

Utilisation des données intégrées Gremlin

graphique = TinkerFactory.createModern()

g = traversée().withEmbedded(graphique)

 À ce stade, vous pouvez simplement expérimenter la syntaxe de Gremlin.

gremlin> gV().elementMap()

gremlin> gE().elementMap()

Connectez-vous à distance

Si vous suivez les étapes en ligne pour créer une galerie. Après l'avoir configuré selon ma configuration précédente, vous pouvez directement

: connexion à distance tinkerpop.server conf/remote-secure-test.yaml

:console distante

Notez que la connexion à un emplacement distant initialisera automatiquement le schéma s et g:graph. Si vous utilisez un schéma local, vous devez initialiser le graphique vous-même.

À ce stade, la simple connexion est OK.

Adresse de l'étude

Commencer

Résumé des liens d'articles pour une étude approfondie du langage de base de données graphique Gremlin_Jermy Li's Blog-CSDN Blog

La différence entre la base de données graphiques et notre base de données relationnelle,

Les graphiques n'ont que le concept de bibliothèque et non de tableau. Toutes les données sont ensemble, comme la table des élèves, la table des enseignants et la table de l'école. Il n'y a pas de concept de tableau, seulement des points et des arêtes. Un graphe de relations composé de sommets et d'arêtes.

L'objectif principal de la base de données graphique est de découvrir la relation entre les points. Par exemple, cette base de données stocke les informations de 1,3 milliard de personnes, soit 1,3 milliard de points. Le bord, c'est qui je connais. Maintenant, il y a un besoin. Quel genre de relation, puis-je connaître Jay Chou ? ?

Le meilleur ami du petit ami du cousin du cousin de la belle-fille de la sœur de mon camarade de lycée est le voisin de l'assistant de Jay Chou.

Si cette relation nécessite que vous utilisiez MySQL pour vérifier les mêmes données et la même relation, c'est vraiment difficile à vérifier.

Mais les données graphiques ne nécessitent qu’une seule ligne de code (ma capacité est limitée et je ne sais pas comment l’optimiser)

gV().hasLabel(person).properties('name','cc').repeat(outE().otherV()).until(has('name','JAY')).path()

facile à comprendre. C'est-à-dire que la personne qui a découvert cc, en fonction du point de la personne, rayonne les bords vers l'extérieur jusqu'à ce qu'il y ait un point =jay

Bon, commençons par l'apprentissage de base. Rappelez-vous l'image ci-dessous, toutes les opérations sont basées sur cette image à titre de tutoriel 

Commencer

gremlin> gV().elementMap()
==>[id:1,label:person,name:marko,age:29]
==>[id:2,label:person,name:vadas,age:27]
= =>[id:3,label:software,name:lop,lang:java]
==>[id:4,label:person,name:josh,age:32]
==>[id:5,label:software ,name:ripple,lang:java]
==>[id:6,label:person,name:peter,age:35]
gremlin> gE().elementMap()
==>[id:7,label:knows, IN:[id:2,label:person],OUT:[id:1,label:person],weight:0.5] ==>[id:8,label:knows,IN:[id:4,label:
person ],OUT:[id:1,label:person],weight:1.0]
==>[id:9,label:created,IN:[id:3,label:software],OUT:[id:1,label :personne],poids:0,4]
==>[id:10,label:created,IN:[id:5,label:software],OUT:[id:4,label:person],weight:1.0]
==>[id:11,label:created,IN:[id:3,label:software],OUT:[id:4,label:person],weight:0.4] ==>[id:12,label
: créé,IN :[id:3,label:software],OUT:[id:6,label:person],weight:0.2]
gremlin> 

1. Opérations de base des graphiques

V()E()id()label()properties()valueMap()values(),elementMap()

V(): Requête des sommets, généralement utilisée comme première étape dans la requête graphique, et il existe de nombreux types d'instructions qui peuvent être poursuivies ultérieurement.

E() : Arêtes de requête, généralement utilisées comme première étape dans une requête graphique, et il existe de nombreux types d'instructions qui peuvent être poursuivies ultérieurement.

id(): Obtenez les identifiants des sommets et des arêtes.

label(): Obtenez les étiquettes des sommets et des arêtes

properties(): Obtenez les attributs des sommets et des arêtes. De plus  properties(), il peut également  être utilisé avec et pour obtenir le nom ou la valeur de l'attribut key().value()

valueMap(): Récupère les attributs des sommets et des arêtes.  La différence est que les structures qu'ils renvoient sont différentes . valueMap()Ce  dernier aplatit tous les attributs dans une grande liste, et un élément représente un attribut. Le premier conserve les attributs d'un sommet ou d'une arête. Comme un groupe, chaque groupe est constitué de paires clé-valeur de plusieurs attributs.properties()

values(): Obtenez les valeurs attributaires des sommets et des arêtes.

elementMap:获取了标签和id 和valueMap properties都不一样

Essai 1

gremlin> g.V()  (1) 查所有的点
==>v[1]
==>v[2]
==>v[3]
==>v[4]
==>v[5]
==>v[6]
gremlin> g.V(1)  (2) 查id=1的点
==>v[1]
gremlin> g.V(1).values('name')  (3) 查id=1的点的名字
==>marko
gremlin> g.V(1).outE('knows')  (4) 查id=1的点的know边(不查create边)
==>e[7][1-knows->2]
==>e[8][1-knows->4]
gremlin> g.V(1).outE('knows').inV().values('name')  (5)查id=1的konw的箭头指向点的name
==>vadas
==>josh
gremlin> g.V(1).out('knows').values('name')  (6) //查id=1的点的know边的点的name
==>vadas
==>josh
gremlin> g.V(1).out('knows').has('age', gt(30)).values('name')  (7)
==>josh

Test 2 : Ajouter des arêtes de points

gremlin> graph = TinkerGraph.open()
==>tinkergraph[vertices:0 bords:0] //Notez qu'il s'agit d'un nouveau graphe
gremlin> g = traversal().withEmbedded(graph)
==>graphtraversalsource[tinkergraph[vertices : 0 bords:0], standard]
gremlin> v1 = g.addV("person").property(id, 1).property("name", "marko").property("age", 29).next ( )
==>v[1]
gremlin> v2 = g.addV("software").property(id, 3).property("name", "lop").property("lang", "java") . next()
==>v[3]
gremlin> g.addE("created").from(v1).to(v2).property(id, 9).property("weight", 0.4) ==>
e [9][1-created->3]
//Ajout de deux points (1 personne et un soft) et un bord (créé) 

2. Le concept de traversée des bords

Voici un conseil pour vous en souvenir,

Si l'objet actuel est un point, alors la méthode suivante sans V et E consiste à vérifier les points, et celle avec E consiste à vérifier les arêtes. Les points peuvent vérifier les points et les arêtes.

Si l'objet actuel est une arête, alors la méthode suivante doit avoir V et l'arête ne peut vérifier que des points.

Comment regarder à l'extérieur et à l'intérieur a->b a est dehors et b est dedans. Regardez la direction de la flèche, quel que soit le côté qui est en V

1. Étapes basées sur le sommet (comme le sommet « 4 » dans la figure ci-dessus) : 

out(label) : accédez aux points adjacents de la direction OUT du sommet en fonction du EdgeLabel spécifié (il peut s'agir de zéro EdgeLabel, représentant tous les types d'arêtes ; il peut également s'agir d'un ou plusieurs EdgeLabel, représentant les arêtes d'un EdgeLabel donné, le idem ci-dessous) in
(label) : accédez au bord adjacent dans la direction IN du sommet selon
le EdgeLabel spécifié. Both(label) : accédez au point adjacent bidirectionnel du sommet
outE(label) en fonction du EdgeLabel spécifié : accédez au bord adjacent dans la direction OUT du sommet.
inE(label) : accédez aux arêtes adjacentes dans la direction IN du sommet en fonction du EdgeLabel spécifié.
BothE(label) : accédez aux arêtes adjacentes bidirectionnelles du sommet en fonction du EdgeLabel spécifié.

Voici quelques petites démos

gremlin> gV(4).out()
==>v[5]
==>v[3] -- Prenez 4 comme sommet et regardez les flèches extérieures pointant vers 3 et 5 4create3 et 5 

gremlin> gV(4).in()
==>v[1] --Avec 4 comme sommet, le point de départ de la flèche pointant vers 4 est 1 1knows4

2. Étapes basées sur le bord (telles que le bord « sait » dans la figure ci-dessus) :

outV() : accède au sommet sortant de l'arête (remarque : ceci est basé sur l'arête, et les étapes ci-dessus sont toutes basées sur le sommet). Le sommet sortant fait référence au sommet de départ de l'arête. inV() : accède au sommet sortant de l'arête
. le sommet entrant de l'arête. Le sommet entrant est Désigne le sommet cible , c'est-à-dire le sommet pointé par la flèche
BothV() : accède au sommet bidirectionnel de l'arête
otherV() : accède au sommet partenaire de l'arête. bord, c'est-à-dire le sommet à l'autre extrémité par rapport au sommet de base

3.démo1

gV(4).out().in() Ceci est couramment utilisé pour vérifier les sommets liés à 1, par exemple, ils sont partenaires et aiment la même chanson que 1

gremlin> gV(4).outE().inV().inE().outV().simplePath().path() ==>[v[4],e[
11][4-created->3 ],v[3],e[9][1-créé->3],v[1]]
==>[v[4],e[11][4-créé->3],v[3 ],e[12][6-créé->3],v[6]]

4 crée 3, et 1 et 6 créent également 3, donc 16 et 4 sont des relations de coopération. 

En fait, c'est le suivant, j'ai aussi trouvé 1 et 6. Quant au 4 supplémentaire, j'en parlerai plus tard.

gremlin> gV(4).out().in()
==>v[4]
==>v[1]
==>v[4]
==>v[6]

3. a un apprentissage par filtre

hasLabel(labels…​) : Si l’étiquette de l’objet correspond à l’une des listes d’étiquettes, il peut transmettre
hasId(ids…​) : Si l’identifiant de l’objet correspond à l’une des listes d’identifiants, il peut transmettre
has(key, value) : Contient des attributs." L'objet avec l'attribut "key=value" passe et agit sur le sommet ou l'arête
has(label, key, value) : L'objet contenant l'attribut "key=value" et la valeur de l'étiquette correspond passe et agit sur le sommet ou l'arête has
(key, predicate) : contient L'objet dont la clé est key et la valeur correspondante satisfait les passes du prédicat. Il agit sur le sommet ou l'arête hasKey
(keys…​) : La clé d'attribut de l'objet doit contenir tous les membres de la liste de clés à passer. Il agit sur l'attribut de sommet
hasValue(values…​): object Ce n'est que lorsque la valeur de l'attribut contient tous les membres de la liste de valeurs qu'il peut passer. Il agit sur l'attribut de sommet
has( key) : l'objet contenant l'attribut dont la clé est la clé passe. Il agit sur le sommet ou l'arête.
hasNot(key) : l'objet qui ne contient pas l'attribut dont la clé est la clé. Par, agissant sur les sommets ou les arêtes

gV().has('personne','nom',within('vadas','marko')).values('age').mean()

Trouvez l'âge du point dont l'étiquette est personne et dont le nom est (vadas ou marko), calculez la valeur moyenne et initialisez-la.

Fonctionnement en boucle

Je suppose que tu aimes

Origine blog.csdn.net/cclovezbf/article/details/132337641
conseillé
Classement