Einbetten von Janus Graph in Java

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.

JanusGraph-article01.png

DB-Einstellungen und persistente Daten werden in Verzeichnissen gespeichert. Ansonsten handelt es sich um eine einfache Anwendungskonfiguration, die unabhängig abgeschlossen wird.

JDK-Installations- und Umgebungsvariablen

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.

Installation

Download von folgenden.

Apache NetBeans

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.

Ein Projekt erstellen

Wenn Sie NetBeans starten, wird der folgende Bildschirm angezeigt.

netbeans_01.jpg

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>".

netbeans_02.jpg

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.

netbeans_03.jpg

Abhängigkeit hinzufügen (siehe Janus-Grafik)

Wählen Sie "Dateien" aus der Zeile mit "Projekt", "Dateien" und "Dienste" oben links, um den Baum der im Projekt vorhandenen Dateien anzuzeigen.

netbeans_04.jpg

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

DB-Konfigurationsdatei hinzufügen

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).

netbeans_05.jpg netbeans_06.jpg netbeans_07.jpg netbeans_08.jpg

Schreiben Sie die folgenden drei Zeilen in die Datei.

embedded.properties


gremlin.graph=org.janusgraph.core.JanusGraphFactory
storage.backend=berkeleyje
storage.directory=../db/berkeley

Programm erstellen

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".

netbeans_09.jpg

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

Hinweis: Was tun, wenn ein Fehler auftritt?

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.

netbeans_10.jpg

Referenz der zu verwendenden Klasse

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.

netbeans_11.jpg

abschließend

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

Einbetten von Janus Graph in Java
Wie man JAVA in 7 Tagen lernt
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
So verketten Sie Zeichenfolgen mit Java
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
So führen Sie eine Basiskonvertierung in Java durch
So erzwingen Sie Codierungskonventionen in Java
So erhalten Sie das Datum mit Java
So zeigen Sie eine Webseite in Java an
So erhalten Sie eine Klasse von Element in Java
So verbergen Sie Nullfelder als Antwort in Java
So lösen Sie Ausdrucksprobleme in Java
Wie schreibe ich Java String # getBytes in Kotlin?
Einbetten von JavaScript-Variablen in HTML mit Thymeleaf
Aufrufen von Funktionen in großen Mengen mit Java Reflection
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
[Java] So lassen Sie den privaten Konstruktor in Lombok weg
So senken Sie die Java-Version
[Java] Verwendung von Map
So deinstallieren Sie Java 8 (Mac)
Java - So erstellen Sie JTable
Wie kann ich IBM Mainframe-Dateien in Java eingeben / ausgeben?
Wie schreibe ich einen Java-Kommentar
Verwendung der Java-Klasse
So erstellen Sie einen Daten-URI (base64) in Java
[Java] Verwendung von removeAll ()
[Java] So zeigen Sie Wingdings an
Verwendung von Java Map
So legen Sie Java-Konstanten fest
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
So konvertieren Sie eine Datei in ein Byte-Array in Java
So verwalten Sie Java EE-Projekte in Eclipse
Verwendung von Java-Variablen
Zusammenfassung der Implementierung von Standardargumenten in Java
So konvertieren Sie Java Base
[Java] So implementieren Sie Multithreading
Wie man altes Java (8er) in macOS 10.15 Catalina einfügt
So initialisieren Sie ein Java-Array
Hinweise zur Verwendung regulärer Ausdrücke in Java
So erhalten Sie den Namen einer Klasse / Methode, die in Java ausgeführt wird
Verwendung von JSON-Daten in der WebSocket-Kommunikation (Java, JavaScript)
Anmerkung: [Java] Überprüfen der in pom.xml beschriebenen groupId usw.
Speichern von Zeichenfolgen von ArrayList zu Zeichenfolge in Java (Personal)
Aufrufen und Verwenden der API in Java (Spring Boot)
Verwendung des Java-Aufzählungstyps (Enum) in Mapper XML von MyBatis
So zeigen Sie Diagramme in Ruby on Rails an (LazyHighChart)
Dynamisches Wechseln von JDKs beim Erstellen von Java mit Gradle
So entwickeln und registrieren Sie eine Sota-App in Java
So simulieren Sie das Hochladen von Post-Object-Formularen in OSS in Java
So stellen Sie eine Java-Anwendung in Alibaba Cloud EDAS in Eclipse bereit
So leiten Sie den letzten Tag des Monats in Java ab
Unterschiede im Umgang mit Zeichenfolgen zwischen Java und Perl
So wechseln Sie Java in der OpenJDK-Ära auf dem Mac