JanusGraph bietet Treiber für verschiedene Sprachen wie Python und Javascript. Es ist möglich, von diesen Sprachen aus auf den Gremlin-Server zuzugreifen. Ich wollte jedoch eine (eingebettete) Anwendung erstellen, die die Datenbank selbst enthält. In diesem Fall sind die Auswahlmöglichkeiten effektiv auf Java und Groovy beschränkt.
Dieses Mal werde ich erklären, wie eine Anwendung erstellt wird, die Janus Graph (mit Berkeley DB) in Java enthält.
DB-Einstellungen und persistente Daten werden in Verzeichnissen gespeichert. Ansonsten handelt es sich um eine einfache Anwendungskonfiguration, die unabhängig abgeschlossen wird.
Wenn Sie nur JanusGraph ausführen möchten, können Sie nur JRE verwenden. Wenn Sie jedoch entwickeln möchten, benötigen Sie JDK. Die Version wird Java 8 sein. Es scheint, dass Sie beim Herunterladen von Oracle ein Konto registrieren müssen, daher habe ich dieses Mal AdoptOpenJDK ausgewählt.
Gehen Sie zur URL und wählen Sie "OpenJDK 8 (LTS)" in 1. und "HotSpot" in 2. (beide sind Standardeinstellungen). Laden Sie aus den angezeigten Dateien das JDK herunter, das Ihrem Betriebssystem entspricht.
Ich habe die Version jdk8u242-b08 (8.0.242.08) für Windows x64 verwendet.
Die Installationsmethode wird weggelassen. Registrieren Sie nach der Installation das JDK-Verzeichnis als Umgebungsvariable JAVA_HOME. In meinem Fall war es wie folgt.
JAVA_HOME=c:\Program Files\AdoptOpenJDK\jdk-8.0.242.08-hotspot
Apache NetBeans
Die für die Entwicklung verwendete IDE kann eigentlich alles sein, aber hier werden wir erklären, wie Apache NetBeans verwendet werden. Ich habe auch Eclipse ausprobiert, aber es lief nicht reibungslos, also habe ich aufgegeben.
Download von folgenden.
Ich habe 11.3 als Version gewählt (weil das Installationsprogramm für Windows verfügbar war). Wenn die Umgebungsvariable JAVA_HOME nicht festgelegt ist, tritt während der Installation ein Fehler auf.
Alle Installationsprogramme haben die Standardeinstellungen vorgenommen, um die Installation abzuschließen.
Wenn Sie NetBeans starten, wird der folgende Bildschirm angezeigt.
Wählen Sie "Datei" - "Neues Projekt ..." aus dem Menü.
Da im Ausgangszustand "Java-Anwendung" von "Java mit Maven" ausgewählt ist, klicken Sie einfach auf die Schaltfläche "Weiter>".
Wenn es das erste Mal ist, wird eine Meldung angezeigt, dass das Plugin usw. heruntergeladen werden muss. Klicken Sie daher auf die Schaltfläche "Herunterladen und aktivieren", um fortzufahren.
Legen Sie als Nächstes den Projektnamen und den Verzeichnisspeicherort fest. Beides ist angemessen. Nachdem Sie alle bestätigt haben, klicken Sie auf die Schaltfläche "Fertig stellen", um die Projekterstellung abzuschließen.
Wählen Sie "Dateien" aus der Zeile mit "Projekt", "Dateien" und "Dienste" oben links, um den Baum der im Projekt vorhandenen Dateien anzuzeigen.
Doppelklicken Sie auf "pom.xml", um es zu öffnen. Hier sind die Abhängigkeitsinformationen von Janus Graph.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>janusexample</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.janusgraph</groupId>
<artifactId>janusgraph-core</artifactId>
<version>0.5.1</version>
</dependency>
<dependency>
<groupId>org.janusgraph</groupId>
<artifactId>janusgraph-berkeleyje</artifactId>
<version>0.5.1</version>
</dependency>
</dependencies>
</project>
Hinzugefügt zwischen "<Abhängigkeiten>" und "</ Abhängigkeiten>". Wie der Name schon sagt, ist "Janus Graph-Core" der Kernbestandteil von Janus Graph. janusgraph-berkeleyje ist eine Bibliothek, die für die Verwendung der integrierten Berkeley DB erforderlich ist. Fügen wir außerdem je nach Zweck die erforderlichen Bibliotheken hinzu.
Bibliotheksname(Artifact ID) | Funktion |
---|---|
janusgraph-all | Eine Sammlung aller JanusGraph-Bibliotheken. Wenn es lästig ist, dieser eine Pom.Wenn Sie es in XML schreiben, können Sie alles verwenden |
janusgraph-backend-testutils | Backend DB-Testsammlung |
janusgraph-berkeleyje | Graph DB-Implementierung mit Berkeley DB als Backend |
janusgraph-bigtable | Treiber für Google Cloud Bigtable |
janusgraph-core | Die Kernbibliotheken von JanusGraph |
janusgraph-cql | Graph DB-Implementierung mit Apache Cassandra als Backend |
janusgraph-dist | Zur Generierung von Distributionsarchiven(Wahrscheinlich nicht von uns Benutzern verwendet) |
janusgraph-doc | Dokument |
janusgraph-driver | Treiber für die Verbindung zum Server |
janusgraph-es | Indizierungsimplementierung mit Elastic Search als Backend |
janusgraph-examples | Beispielcode-Sammlung |
janusgraph-hadoop | Grafikanalyse-Engine mit Apache Hadoop |
janusgraph-hbase-parent | Apache HBase-bezogene Bibliotheken |
janusgraph-inmemory | In-Memory-Graph-DB-Implementierung |
janusgraph-lucene | Indizierung der Implementierung mit Lucene |
janusgraph-server | Janus Graph Gremlin Server Implementierung |
janusgraph-solr | Indizierungsimplementierung mit Apache Solr |
janusgraph-test | Testcode |
Dieses Mal möchte ich Berkeley DB einbinden, daher werde ich dem Projekt eine solche Konfigurationsdatei hinzufügen.
Erstellen Sie ein "conf" -Verzeichnis im Stammverzeichnis des Dateibaums und fügen Sie die Datei "embedded.properties" hinzu (ein beliebiger Dateiname).
Schreiben Sie die folgenden drei Zeilen in die Datei.
embedded.properties
gremlin.graph=org.janusgraph.core.JanusGraphFactory
storage.backend=berkeleyje
storage.directory=../db/berkeley
Fügen Sie den Quellcode des Programms hinzu. Erstellen Sie Ihre eigene Klassendatei im Verzeichnis mit demselben Namen wie der Projektname, der im tiefsten Teil des Verzeichnisses "src" erstellt wurde. Der Name ist "JanusExample.java".
Der Inhalt des Codes ist zunächst wie folgt.
JanusExample.java
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.janusgraph.core.JanusGraphFactory;
public class JanusExample {
public static void main(String args[])
{
Graph graph = JanusGraphFactory.open("conf/embedded.properties");
System.out.println(graph.toString());
graph.close();
}
}
Dies ist ein einfaches Beispiel, das das Diagramm nur öffnet und schließt. Build ist "Ausführen" "Projekt erstellen" (F11-Taste in Windows) aus dem Menü. Es kann über "Ausführen" und "Projekt ausführen" ausgeführt werden (Taste F6 unter Windows). Das erste Mal, dass Maven verschiedene Dinge herunterlädt, nimmt viel Zeit in Anspruch. Bei der Ausführung wird ein "db" -Verzeichnis erstellt und die Daten werden dort gespeichert.
Rufen Sie zum Abfragen die Graph Traversal Source ab. Das Abrufen des Rückgabewerts ist eine statisch typisierte Sprache, daher ist es ziemlich schwierig, aber ich hoffe, Sie machen es gut.
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.janusgraph.core.JanusGraphFactory;
public class JanusExample {
public static void main(String args[])
{
Graph graph = JanusGraphFactory.open("conf/embedded.properties");
GraphTraversalSource g = graph.traversal();
//Leeren Sie die Grafik
g.V().drop().iterate();
//Fügen Sie einen Scheitelpunkt hinzu
g.addV("person").property("name", "bob").property("age", 27).iterate();
//Änderung bestätigen
g.tx().commit();
//Versuchen Sie, eine Abfrage auszugeben, um den Wert abzurufen
List<Map<Object, Object>> result = g.V().valueMap("name", "age").toList();
//Der Rückgabewert ist[{name: ["bob"], age: [27]}]Sollte zurückgegeben werden
for(Map<Object, Object> vertex : result){
//Scheitelpunkt ist{name:["bob"], age: [27]}Sollte sein
ArrayList<String> names = (ArrayList<String>)vertex.get("name"); // ["bob"]Erhalten
ArrayList<Integer> ages = (ArrayList<Integer>)vertex.get("age"); // [27]Erhalten
String name = names.get(0); //"bob"Erhalten
Integer age = ages.get(0); //Holen Sie sich 27
System.out.printf("name: %s, age: %s\n", name, age);
}
//Versuchen Sie, eine Abfrage auszugeben, um die Anzahl der Scheitelpunkte abzurufen
Long count = g.V().count().next();
System.out.printf("vertex count is %d\n", count);
graph.close();
}
}
Das Ergebnis sollte folgendermaßen aussehen:
name: bob, age: 27
vertex count is 1
Wenn während der Ausführung eine Ausnahme auftritt, wird das Programm nicht beendet. Wenn Sie versuchen, es so wie es ist erneut auszuführen, kann das Diagramm nicht geöffnet werden, sodass Sie das vorhandene Programm beenden müssen. Die x-Taste wird unten rechts in der IDE angezeigt. Drücken Sie sie zum Beenden.
Wenn Sie eine Klasse schreiben, die nicht in Ihren Code importiert wurde, wird sie unten als rote Linie angezeigt. Sie können die Klasse importieren, indem Sie den Cursor auf diesen Teil bewegen und "Alt + Eingabetaste" drücken. Um ehrlich zu sein, kann ich ohne diese Funktion nicht in Java entwickeln.
Wenn Sie nicht mit Java vertraut sind, gibt es einige Schmerzen (ich selbst bin ein Amateur, also war es tatsächlich schmerzhaft), aber es ist überraschend einfach zu integrieren, daher denke ich, dass es ziemlich einfach zu bedienen ist.
Sie können es zu einer eigenständigen App machen oder die Abfrageergebnisse konvertieren, an JSON senden und als einfachen selbst erstellten GraphDB-Server betreiben.
Persönlich wäre es ideal, wenn es so in Python integriert werden könnte ...
Recommended Posts