OrientDB unter Ubuntu 16.04/18.04 installieren und einrichten


OrientDB auf Ubuntu installieren

In unseren vorhergehenden Tutorials habe ich dir gezeigt, wie du MySQL, PostgreSQL, MongoDB, Apache Cassandra, Redis, RethinkDB, InfluxDB, Neo4j und ArangoDB unter Ubuntu installierst und einrichtest. In diesem Tutorial nun werde ich dir die NoSQL-Datenbank-Plattform OrientDB vorstellen, mit dir Schritt für Schritt einen Installations- und Einrichtungsprozess durchgehen und dir die wichtigsten Features von OrientDB anhand einem kleinen Anwendungsszenario nahe bringen.

Zu OrientDB

OrientDB ist eine in Java geschriebene Open-Source-NoSQL-Multi-Modell-Datenbank, die die Leistungsfähigkeit von Graphen mit Dokumenten-, Schlüssel / Wert-, reaktiven, objektorientierten und Geodatenmodellen in einer einzigen skalierbaren, leistungsfähigen Datenbank vereint. OrientDB verfolgt als NoSQL-Datenbank-Plattform einen nicht-relationalen Ansatz, nutzt jedoch eine SQL-basierte Abfragesprache, die erweitert wurde, um Bäume und Graphen zu erstellen.

Anwendungsszenario

Um dir die dokumentenorientierte Datenbank-Plattform aus der Warte der wichtigsten Features zu zeigen, habe ich mir ein kleines Anwendungsszenario ausgedacht. Die Dokumente in OrientDB kannst du dir als Informationseinheiten im JSON-Format vorstellen. Ein Dokument ist im Sinne eines Graphen entweder ein Knoten oder eine Kante. Ein Knoten käme zur besseren Verständlichkeit im konventionellen relationalen Datenbankmodell einer Entität gleich und eine Kante einer Relation zwischen Entitäten. Ich werde in diesem Tutorial eine kleine Filmdatenbank erstellen, in der ich das Genre von Filmen der Schauspielerin Jennifer Lawrence in Form von Graphen abbildbar mache.

Voraussetzung

Java muss auf deinem Server installiert sein. Eine Anleitung hierzu findest du in unserem Tutorial zum Thema Neo4j unter Ubuntu 16.04/18.04 installieren und einrichten.

Installation und Konfiguration von OrientDB

Stelle sicher, dass dein Server up-to-date ist.


apt-get update && apt-get upgrade

Lade dir OrientDB-Community herunter. Bei Bedarf kannst du die Versionsnummer im folgenden Befehl entsprechend anpassen.


wget https://s3.us-east-2.amazonaws.com/orientdb3/releases/3.0.4/orientdb-3.0.4.tar.gz

Der heruntergeladene Tarball enthält vorkompilierte Binärdateien, um OrientDB auf deinem System auszuführen. Mit dem unten stehenden Kommando entpackst du diesen.


tar -zxvf orientdb-3.0.4.tar.gz

Die Dateien wurden in das Verzeichnis orientdb-community-3.0.4 extrahiert. Als nächstes musst du dieses in das /opt-Verzeichnis überführen und es in orientdb umbenennen. Hierzu führst du das unten eingeblendete Kommando aus.


mv ~/orientdb-3.0.4 /opt/orientdb

Wenn dein Server speicherbeschränkt ist, kannst du OrientDB so konfigurieren, dass weniger RAM verwendet wird. Per default erwartet der OrientDB-Daemon nämlich mindestens 2 GB RAM und kann nicht starten, wenn er weniger findet. Die Änderung des Arbeitsspeichers müsstest du bei Bedarf dann in der Datei server.sh dahingehend vornehmen, dass der Daemon mit weniger RAM starten kann.


nano /opt/orientdb/bin/server.sh

Scrolle in der Datei zu dem Teil, der im Code-Snippet unten zu erkennen ist


. . .

# ORIENTDB memory options, default to 2GB of heap.

if [ -z "$ORIENTDB_OPTS_MEMORY" ] ; then
    ORIENTDB_OPTS_MEMORY="-Xms2G -Xmx2G"
fi

. . .

und ändere die Werte für Xms und Xmx, da diese den initialen und maximalen Speicherzuweisungspool für die Java Virtual Machine spezifizieren.
Stelle jedoch sicher, dass Xms mindestens 128 MB groß ist, da OrientDB ansonsten nicht gestartet wird. Zum Beispiel lege die Werte für die anfängliche und maximale Menge von RAM so fest, dass diese zwischen 128 MB und 256 MB liegen.


# ORIENTDB memory options, default to 2GB of heap.

if [ -z "$ORIENTDB_OPTS_MEMORY" ] ; then
    ORIENTDB_OPTS_MEMORY="-Xms128m -Xmx256m"
fi

Als nächstes geht es nun daran, den Server zu starten, um eine Verbindung zur Konsole herzustellen. Navigiere vorab mittels dem folgenden Befehl zum /opt/orientdb-Installationsverzeichnis.


cd /opt/orientdb

Starte daraufhin schließlich den Server.


bin/server.sh

Wenn du den Server zum ersten Mal startest, wirst du aufgefordert, ein Kennwort für das root-Benutzerkonto anzulegen, wie am Ende des unten gezeigten Outputs aufgeführt. Das Konto, dass du hierbei anlegst, ist ein internes OrientDB-Konto, das für den Zugriff auf den Server verwendet wird, beispielsweise für OrientDB Studio, die webbasierte Schnittstelle für die Verwaltung von OrientDB. Wenn du kein Passwort angibst, wird eines automatisch generiert.


           .                                          
          .`        `                                 
          ,      `:.                                  
         `,`    ,:`                                   
         .,.   :,,                                    
         .,,  ,,,                                     
    .    .,.:::::  ````                                 :::::::::     :::::::::   
    ,`   .::,,,,::.,,,,,,`;;                      .:    ::::::::::    :::    :::  
    `,.  ::,,,,,,,:.,,.`  `                       .:    :::      :::  :::     ::: 
     ,,:,:,,,,,,,,::.   `        `         ``     .:    :::      :::  :::     ::: 
      ,,:.,,,,,,,,,: `::, ,,   ::,::`   : :,::`  ::::   :::      :::  :::    :::  
       ,:,,,,,,,,,,::,:   ,,  :.    :   ::    :   .:    :::      :::  :::::::     
        :,,,,,,,,,,:,::   ,,  :      :  :     :   .:    :::      :::  :::::::::   
  `     :,,,,,,,,,,:,::,  ,, .::::::::  :     :   .:    :::      :::  :::     ::: 
  `,...,,:,,,,,,,,,: .:,. ,, ,,         :     :   .:    :::      :::  :::     ::: 
    .,,,,::,,,,,,,:  `: , ,,  :     `   :     :   .:    :::      :::  :::     ::: 
      ...,::,,,,::.. `:  .,,  :,    :   :     :   .:    :::::::::::   :::     ::: 
           ,::::,,,. `:   ,,   :::::    :     :   .:    :::::::::     ::::::::::  
           ,,:` `,,.                                  
          ,,,    .,`                                  
         ,,.     `,                                              VELOCE  
       ``        `.                                                          
                 ``                                       www.orientdb.com
                 `                                    

2018-07-30 22:26:52:433 INFO  Detected limit of amount of simultaneously open files is 1048576,  limit of open files for disk cache will be set to 523776 [ONative]
2018-07-30 22:26:52:449 INFO  Loading configuration from: /opt/orientdb/config/orientdb-server-config.xml... [OServerConfigurationLoaderXml]
2018-07-30 22:26:53:001 INFO  OrientDB Server v3.0.4 - Veloce (build 4578b51f72a55feaa0852bc8ddd52929011d956c, branch 3.0.x) is starting up... [OServer]
2018-07-30 22:26:53:027 INFO  4124733440 B/3933 MB/3 GB of physical memory were detected on machine [ONative]
2018-07-30 22:26:53:028 INFO  Soft memory limit for this process is set to -1 B/-1 MB/-1 GB [ONative]
2018-07-30 22:26:53:028 INFO  Hard memory limit for this process is set to -1 B/-1 MB/-1 GB [ONative]
2018-07-30 22:26:53:029 INFO  Path to 'memory' cgroup is '/user.slice/user-0.slice/session-1.scope' [ONative]
2018-07-30 22:26:53:032 INFO  Mounting path for memory cgroup controller is '/sys/fs/cgroup/memory' [ONative]
2018-07-30 22:26:53:033 INFO  cgroup soft memory limit is 9223372036854771712 B/8796093022207 MB/8589934591 GB [ONative]
2018-07-30 22:26:53:034 INFO  cgroup hard memory limit is 9223372036854771712 B/8796093022207 MB/8589934591 GB [ONative]
2018-07-30 22:26:53:034 INFO  Detected memory limit for current process is 4124733440 B/3933 MB/3 GB [ONative]
2018-07-30 22:26:53:036 INFO  JVM can use maximum 1963MB of heap memory [OMemoryAndLocalPaginatedEnginesInitializer]
2018-07-30 22:26:53:036 INFO  Because OrientDB is running outside a container 2g of memory will be left unallocated according to the setting 'memory.leftToOS' not taking into account heap memory [OMemoryAndLocalPaginatedEnginesInitializer]
2018-07-30 22:26:53:037 WARNI Not enough physical memory available for DISKCACHE: 3,933MB (heap=1,963MB). Set lower Maximum Heap (-Xmx setting on JVM) and restart OrientDB. Now running with DISKCACHE=256MB [orientechnologies]
2018-07-30 22:26:53:037 INFO  OrientDB config DISKCACHE=256MB (heap=1,963MB os=3,933MB) [orientechnologies]
2018-07-30 22:26:53:051 INFO  Databases directory: /opt/orientdb/databases [OServer]
2018-07-30 22:26:53:093 INFO  Creating the system database 'OSystem' for current server [OSystemDatabase]
2018-07-30 22:26:53:698 INFO  Storage 'plocal:/opt/orientdb/databases/OSystem' is created under OrientDB distribution : 3.0.4 - Veloce (build 4578b51f72a55feaa0852bc8ddd52929011d956c, branch 3.0.x) [OLocalPaginatedStorage]
2018-07-30 22:26:57:843 INFO  Listening binary connections on 0.0.0.0:2424 (protocol v.37, socket=default) [OServerNetworkListener]
2018-07-30 22:26:57:847 INFO  Listening http connections on 0.0.0.0:2480 (protocol v.10, socket=default) [OServerNetworkListener]

+---------------------------------------------------------------+
|                WARNING: FIRST RUN CONFIGURATION               |
+---------------------------------------------------------------+
| This is the first time the server is running. Please type a   |
| password of your choice for the 'root' user or leave it blank |
| to auto-generate it.                                          |
|                                                               |
| To avoid this message set the environment variable or JVM     |
| setting ORIENTDB_ROOT_PASSWORD to the root password to use.   |
+---------------------------------------------------------------+

Root password [BLANK=auto generate it]: *

Wenn dir das oben eingeblendete Output erscheint, läuft OrientDB jetzt in deinem aktuellen Terminal. Nachdem ich ein Passwort angelegt habe, erhalte ich ein Output der Form, wie du es im Code-Block unten erkennst.


Root password [BLANK=auto generate it]: ********
Please confirm the root password: ********

2018-07-30 22:29:23:355 INFO  Installing dynamic plugin 'orientdb-neo4j-importer-plugin-3.0.4-dist.jar'... [OServerPluginManager]
2018-07-30 22:29:23:363 INFO  Installing dynamic plugin 'orientdb-teleporter-3.0.4.jar'... [OServerPluginManager]
2018-07-30 22:29:23:372 INFO  Installing dynamic plugin 'orientdb-studio-3.0.4.zip'... [OServerPluginManager]
2018-07-30 22:29:23:373 INFO  Installing dynamic plugin 'orientdb-etl-3.0.4.jar'... [OServerPluginManager]
2018-07-30 22:29:23:378 INFO  ODefaultPasswordAuthenticator is active [ODefaultPasswordAuthenticator]
2018-07-30 22:29:23:379 INFO  OServerConfigAuthenticator is active [OServerConfigAuthenticator]
2018-07-30 22:29:23:380 INFO  OSystemUserAuthenticator is active [OSystemUserAuthenticator]
2018-07-30 22:29:23:381 INFO  [OVariableParser.resolveVariables] Property not found: distributed [orientechnologies]
2018-07-30 22:29:23:389 WARNI Authenticated clients can execute any kind of code into the server by using the following allowed languages:  [OServerSideScriptInterpreter]
2018-07-30 22:29:23:392 INFO  OrientDB Studio available at http://185.201.144.136:2480/studio/index.html [OServer]
2018-07-30 22:29:23:392 INFO  OrientDB Server is active v3.0.4 - Veloce (build 4578b51f72a55feaa0852bc8ddd52929011d956c, branch 3.0.x). [OServer]

Als nächstes startest du den Server neu, was du mit dem folgenden Kommando umsetzt.


reboot

Schließlich meldest du dich mit Hilfe des unten stehenden Kommandos wieder auf deinem Server an, wobei du localhost mit der IP deines Servers austauscht,


ssh root@localhost

erneut in das Installationsverzeichnis wechselst


cd /opt/orientdb

und den OrientDB-Server startest.


bin/server.sh

Als nächstes lässt du dir bestätigen, dass der Server die entsprechenden Ports abhört. Öffne hierzu ein zweites Terminal und verbinde dich dort ebenfalls über den oben präsentierten Befehl mit demselben Server. Vergewissere dich dann in diesem zweiten Terminal, dass der Server die Ports 2424 (für binäre Verbindungen) sowie 2480 (für HTTP-Verbindungen) mit dem folgenden Befehl abhört.


netstat -plunt | grep -i listen

Das Output sollte Referenzen auf beide Portnummern enthalten, wie folgt:


tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1262/sshd       
tcp6       0      0 :::2480                 :::*                    LISTEN      1625/java       
tcp6       0      0 :::22                   :::*                    LISTEN      1262/sshd       
tcp6       0      0 :::2424                 :::*                    LISTEN      1625/java

Nachdem der Server gestartet wurde und du verifiziert hast, dass er ausgeführt wird, stelle eine Verbindung zur OrientDB-Konsole im zweiten Terminal her. Lasse den ersten Terminal parallel dazu noch geöffnet. Die OrientDB-Konsole ist die Befehlszeilenschnittstelle für die Arbeit mit der Anwendung. Du startest die OrientDB-Konsole mit dem folgenden Kommando.


/opt/orientdb/bin/console.sh

Output:


OrientDB console v.3.0.4 - Veloce (build 4578b51f72a55feaa0852bc8ddd52929011d956c, branch 3.0.x) https://www.orientdb.com
Type 'help' to display all the supported commands.

orientdb>

Stelle jetzt eine Verbindung zur Server Instanz her. Das erforderliche Kennwort ist das Kennwort, das du beim ersten Starten des Servers festgelegt hast. Im Code-Snippet unten präsentierten Kommando würdest du password mit dem betreffenden Passwort austauschen.


orientdb> connect remote:127.0.0.1 root password

Output nach erfolgreicher Verbindung:


OK
orientdb {server=remote:127.0.0.1}>

Wenn du fertig bist, gib exit im zweiten Terminal ein, um die OrientDB-Eingabeaufforderung zu beenden.


orientdb {server=remote:127.0.0.1/}> exit

Nachdem du nun OrientDB installiert, manuell gestartet und eine Verbindung hergestellt hast, weißt du zwar, dass es funktioniert, aber es bedeutet auch, dass du es manuell starten musst, wenn du den Server neu starten würdest. In den nächsten Schritten konfiguriere ich OrientDB so, dass es wie jeder andere Daemon auf dem Server ausgeführt wird. Dazu muss zum einen das Skript /opt/orientdb/bin/orientdb.sh und zum anderen die Konfigurationsdatei /opt/orientdb/config/orientdb-server-config.xml geändert werden.
Schließe vor den nächsten Schritten das 1. Terminalfenster.
Die Änderung des Skripts /opt/orientdb/bin/orientdb.sh ist erforderlich, um OrientDB den Benutzer mitzuteilen, unter dem es ausgeführt werden soll, und um es auf das Installationsverzeichnis zu verweisen. Erstelle hierfür vorab den Systembenutzer, den OrientDB ausführen soll. In meinem Beispiel erstelle ich den testuser-Benutzer. Der Befehl inkludiert die Erstellung der testuser-Gruppe.


useradd -r testuser -s /sbin/nologin

Erteile dem neu erstellten testuser-Benutzer und der testuser-Gruppe den Besitz des OrientDB-Verzeichnisses und der zugehörigen Dateien mittels folgendem Kommando.


chown -R testuser:testuser /opt/orientdb

Schließlich nehme ich ein paar Änderungen am Skript orientdb.sh vor. Ich öffne es mit dem folgenden Befehl im nano-Editor.


nano /opt/orientdb/bin/orientdb.sh

Dort navigierst du dich zu der Stelle, die du im Code-Snippet unten erkennst


. . .

# You have to SET the OrientDB installation directory here
ORIENTDB_DIR="YOUR_ORIENTDB_INSTALLATION_PATH"
ORIENTDB_USER="USER_YOU_WANT_ORIENTDB_RUN_WITH"

. . .

und tauscht die Inhalte der beiden Zeilen mit denen aus, die du dem Code-Block unten entnimmst. Du speicherst das Update durch Betätigung der Tastenkombination Strg+O, bestätigst den daraufhin in einem weißen Balken eingeblendeten Dateinamen mit der Enter-Taste und verlässt den nano-Editor durch Betätigung der Tastenkombination Strg+X.


…

# You have to SET the OrientDB installation directory here
ORIENTDB_DIR="/opt/orientdb"
ORIENTDB_USER="orientdb"

...

Ändere anschließend die Berechtigungen der Serverkonfigurationsdatei, um zu verhindern, dass nicht autorisierte Benutzer sie lesen können.


chmod 640 /opt/orientdb/config/orientdb-server-config.xml

Mit dem nächsten Kommando konfiguriere ich den Daemon so, dass er von Systemd, dem Service-Manager, gesteuert wird.


cp /opt/orientdb/bin/orientdb.service /etc/systemd/system

In dieser Datei müssen einige Einstellungen geändert werden. Öffne sie zum Editieren mittels folgendem Kommando.


nano /etc/systemd/system/orientdb.service

Ändere die Benutzer-, Gruppen- und ExecStart-Variablen unter dem Punkt Service, damit diese mit deiner Installation übereinstimmen. Du hinterlegst – wie im Code-Block unten demonstriert – den Benutzer und die Gruppe (beide sind in meinem Beispiel testuser). ExecStart gibt den Pfad zum Skript an, der mit /opt/orientdb beginnen sollte.


. . .

[Service]
User=testuser
Group=testuser
ExecStart=/opt/orientdb/bin/server.sh

...

Führe anschließend den folgenden Befehl aus, um alle Einheiten neu zu laden.


systemctl daemon-reload

Wenn alles vorhanden ist, kannst du jetzt den OrientDB-Dienst starten.


systemctl start orientdb

Und stelle sicher, dass OrientDB beim Booten startet.


systemctl enable orientdb

Stelle zudem sicher, dass OrientDB wirklich begonnen hat, indem du den Prozessstatus mit Hilfe des folgenden Kommandos überprüfst.


systemctl status orientdb

Output:


● orientdb.service - OrientDB Server
   Loaded: loaded (/etc/systemd/system/orientdb.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-07-30 22:49:44 CEST; 24s ago
 Main PID: 1747 (java)
   CGroup: /system.slice/orientdb.service
           └─1747 java -server -Xms2G -Xmx2G -Djna.nosys=true -XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true -Dfile.encoding=UT

Jul 30 22:49:46 server-qqo7zytv server.sh[1747]: 2018-07-30 22:49:46:463 INFO  Installing dynamic plugin 'orientdb-neo4j-importer-plugin-
Jul 30 22:49:46 server-qqo7zytv server.sh[1747]: 2018-07-30 22:49:46:469 INFO  Installing dynamic plugin 'orientdb-teleporter-3.0.4.jar'.
Jul 30 22:49:46 server-qqo7zytv server.sh[1747]: 2018-07-30 22:49:46:475 INFO  Installing dynamic plugin 'orientdb-studio-3.0.4.zip'... [
Jul 30 22:49:46 server-qqo7zytv server.sh[1747]: 2018-07-30 22:49:46:476 INFO  Installing dynamic plugin 'orientdb-etl-3.0.4.jar'... [OSe
Jul 30 22:49:46 server-qqo7zytv server.sh[1747]: 2018-07-30 22:49:46:481 INFO  ODefaultPasswordAuthenticator is active [ODefaultPasswordA
Jul 30 22:49:46 server-qqo7zytv server.sh[1747]: 2018-07-30 22:49:46:482 INFO  OServerConfigAuthenticator is active [OServerConfigAuthent
Jul 30 22:49:46 server-qqo7zytv server.sh[1747]: 2018-07-30 22:49:46:483 INFO  OSystemUserAuthenticator is active [OSystemUserAuthenticat
Jul 30 22:49:46 server-qqo7zytv server.sh[1747]: 2018-07-30 22:49:46:484 INFO  [OVariableParser.resolveVariables] Property not found: dis
Jul 30 22:49:46 server-qqo7zytv server.sh[1747]: 2018-07-30 22:49:46:490 WARNI Authenticated clients can execute any kind of code into th
Jul 30 22:49:46 server-qqo7zytv server.sh[1747]: 2018-07-30 22:49:46:493 INFO  OrientDB Studio available at http://185.201.144.136:2480/s
lines 1-17/17 (END)

Getting started mit OrientDB Studio

OrientDB Studio ist die Weboberfläche für die Verwaltung von OrientDB. Wenn du es aktivieren möchtest, musst du deiner Firewall eine Regel hinzufügen. Standardmäßig hört OrientDB Studio Port 2480 ab. Wenn du die Firewall auf dem Server konfiguriert hast, musst du den Zugriff auf Port 2480 zulassen, was du mit dem unten stehenden Befehl umsetzen würdest.


ufw allow 2480

Starte daraufhin UFW mit dem unten gezeigten Kommando neu.


systemctl restart ufw

Rufe im Anschluss daran in deinem Browser die Adresse http://localhost:2480 auf, wobei du localhost mit der IP deines Servers austauscht.

Du kannst dich als root mit dem zuvor festgelegten Passwort anmelden. Alternativ kannst du auch die demodb-Datenbank in der im Screenshot unten ersichtlich werdenden Dropdown-Liste auswählen und dich mit einem der in OrientDB enthaltenen Standardbenutzerkonten anmelden (Administrator, Leser oder Schreiber). Diese Datenbank stellt sozusagen eine Demo zur Verfügung anhand der du dich mit den Funktionalitäten von OrientDB vertraut machen und experimentieren kannst. Je nach Rolle würden sich entsprechend die Anmeldedaten ändern. Wenn du dich in der besagten demodb-Datenbank mit Administratorrechten anmelden möchtest, dann wäre der Benutzername admin und das Passwort admin. Im Fall der Anmeldung mit Leserechten wäre der Benutzername reader und das Passwort reader. Und im Fall der Anmeldung mit Schreibrechten wäre der Benutzername writer und das Passwort writer.

Anmeldeseite der Weboberfläche von OrientDB

In meinem Fall erstelle ich eine neue Datenbank namens testDB. Im Screenshot unten erkennst du, dass hierfür neben dem Namen der Datenbank Informationen zum Benutzernamen und seinem Passwort erforderlich sind.

In der Weboberfläche von OrientDB eine Datenbank anlegen

Im SCHEMA-Menüpunkt ist es dir möglich eine beliebige Anzahl an Knoten und deren verbindende Kanten zu erstellen. Hierzu bietet sich der Button + NEW VERTEX, bzw. + NEW EDGE an. Im unten präsentierten Screenshot erkennst du das Interface, dass nach Betätigung des Button + NEW VERTEX erscheint. Hier lege ich die Entität Movie an.

In der Weboberfläche von OrientDB einen Knoten anlegen

Als weitere Knoten-Klasse lege ich danach Genre an. Schließlich stelle ich noch die Relation zwischen den beiden Entitäten Movie und Genre her. Im Interface, dass nach Betätigung des Button + NEW EDGE generiert wird, benenne ich die Relation als belong_to und erzeuge die Verbindung zwischen Movie und Genre. Wie du im Screenshot unten erkennst, bieten dir hierzu Dropdown-Listen die Möglichkeit aus der vorhandenen Menge zu wählen.

In der Weboberfläche von OrientDB eine Kante anlegen

Als nächstes lege ich fest, über welche Eigenschaften die Entitäten Movie und Genre verfügen sollen. Hierzu klicke ich auf die betreffende Entität, gelange auf deren Webseite und betätige dort den Button + NEW PROPERTY, woraufhin sich ein Interface öffnet, in dem du u.a. den Namen der Eigenschaft, sowie deren Datentyp definieren kannst. In den drei folgenden Screenshots siehst du, wie ich der Entität Genre die Eigenschaft type (Art), sowie der Entität Movie die Eigenschaften year_of_publication (Publikationsjahr), length (Spiellänge) und name (Name/Titel) zuschreibe.

In der Weboberfläche von OrientDB Eigenschaften einer Kante definieren

In der Weboberfläche von OrientDB Eigenschaften einer Kante definieren

In der Weboberfläche von OrientDB Eigenschaften einer Kante definieren

In der Weboberfläche von OrientDB Eigenschaften einer Kante definieren

Im BROWSE-Tab befülle ich danach dann die betreffenden Entitäten Movie und Genre mit Informationen. Hierzu bietet die darin befindliche Kommandozeile die Möglichkeit. Hierbei folge ich der Syntax, wie sie im Code-Snippet unten eingeblendet ist.


INSERT INTO Entity(Attribute1, Attribute2 ...) VALUES (Value1, Value2 ...)

Zum besseren Nachvollziehen dient dir der Screenshot unten, aus dem du eine beispielhafte Query über die Kommandozeile im BROWSE-Tab entnimmst.

In der Weboberfläche von OrientDB einen Knoteneintrag hinzufügen

Zusätzlich stelle ich dir alle Kommandos zum Befüllen der Entität Movie mit Daten in den folgenden Code-Snippets bereit.


INSERT INTO Movie(length, name, year_of_publication) VALUES (116, "Passengers", 2016)

INSERT INTO Movie(length, name, year_of_publication) VALUES (122, "Silver Linings", 2012)

INSERT INTO Movie(length, name, year_of_publication) VALUES (124, "Joy - Alles außer gewöhnlich", 2015)

INSERT INTO Movie(length, name, year_of_publication) VALUES (138, "American Hustle", 2013)

INSERT INTO Movie(length, name, year_of_publication) VALUES (109, "Serena", 2014)

INSERT INTO Movie(length, name, year_of_publication) VALUES (101, "House at the End of the Street", 2012)

INSERT INTO Movie(length, name, year_of_publication) VALUES (100, "Winter's Bone", 2010)

INSERT INTO Movie(length, name, year_of_publication) VALUES (141, "Red Sparrow", 2018)

INSERT INTO Movie(length, name, year_of_publication) VALUES (142, "Die Tribute von Panem - The Hunger Games", 2012)

INSERT INTO Movie(length, name, year_of_publication) VALUES (146, "Die Tribute von Panem - Catching Fire", 2013)

INSERT INTO Movie(length, name, year_of_publication) VALUES (123, "Die Tribute von Panem - Mockingjay Teil 1", 2014)

INSERT INTO Movie(length, name, year_of_publication) VALUES (137, "Die Tribute von Panem - Mockingjay Teil 2", 2015)

Hiernach erkennst du im SCHEMA-Menüpunkt in der Spalte Records die Anzahl der implementierten Items in der Knoten-Klasse Movie.

Schema Manager in der Weboberfläche von OrientDB

Wenn du auf die Knoten-Klasse Movie klickst und auf der daraufhin weitergeleiteten Seite den Button QUERY ALL aktivierst, wird dir die Menge der in der Entität Movie befindlichen Items angezeigt, wie dir der untenstehende Screenshot verbildlicht. Analog dazu würde die Query in der Kommandozeile des BROWSE-Menüpunkts, wie sie ebenfalls im Screenshot unten zu sehen ist, die entsprechende Ergebnismenge liefern.

Treffermenge einer Query in der Weboberfläche von OrientDB

Schließlich stelle ich dir noch die Kommandos zum Befüllen der Entität Genre mit Daten in den folgenden Code-Snippets zur Verfügung.


INSERT INTO Genre(type) VALUES ("Drama")

INSERT INTO Genre(type) VALUES ("Science fiction")

INSERT INTO Genre(type) VALUES ("Tragicomedy")

INSERT INTO Genre(type) VALUES ("Thriller")

Letztlich müssen noch die Relationen zwischen Items der beiden Entitäten Movie und Genre in die Datenbank geschrieben werden. Eine Musteranfrage würde so aussehen, wie im Code-Block unten eingeblendet. Optionale Parameter habe ich mit [ ]-Klammern kenntlich gemacht.


CREATE EDGE edge_name FROM (SELECT FROM Entity1 WHERE Attribute1 = Value1 [AND/OR Attribute2 = Value2 …]) TO (SELECT FROM Entity2 WHERE Attribute1 = Value1 [AND/OR Attribute2 = Value2 …])

Mit Hilfe der folgenden Code-Snippets können die Relationen implementiert werden.


CREATE EDGE belong_to FROM (SELECT FROM Movie WHERE name = "American Hustle") TO (SELECT FROM Genre WHERE type = "Drama")

CREATE EDGE belong_to FROM (SELECT FROM Movie WHERE name = "Passengers") TO (SELECT FROM Genre WHERE type = "Science fiction")

CREATE EDGE belong_to FROM (SELECT FROM Movie WHERE name = "Red Sparrow") TO (SELECT FROM Genre WHERE type = "Drama")

CREATE EDGE belong_to FROM (SELECT FROM Movie WHERE name = "Die Tribute von Panem - The Hunger Games") TO (SELECT FROM Genre WHERE type = "Science fiction")

CREATE EDGE belong_to FROM (SELECT FROM Movie WHERE name = "Die Tribute von Panem - Catching Fire") TO (SELECT FROM Genre WHERE type = "Science fiction")

CREATE EDGE belong_to FROM (SELECT FROM Movie WHERE name = "Die Tribute von Panem - Mockingjay Teil 1") TO (SELECT FROM Genre WHERE type = "Science fiction")

CREATE EDGE belong_to FROM (SELECT FROM Movie WHERE name = "Die Tribute von Panem - Mockingjay Teil 2") TO (SELECT FROM Genre WHERE type = "Science fiction")

CREATE EDGE belong_to FROM (SELECT FROM Movie WHERE name = "Serena") TO (SELECT FROM Genre WHERE type = "Drama")

CREATE EDGE belong_to FROM (SELECT FROM Movie WHERE name = "Silver Linings") TO (SELECT FROM Genre WHERE type = "Tragicomedy")

CREATE EDGE belong_to FROM (SELECT FROM Movie WHERE name = "House at the End of the Street") TO (SELECT FROM Genre WHERE type = "Thriller")

CREATE EDGE belong_to FROM (SELECT FROM Movie WHERE name = "Joy - Alles außer gewöhnlich") TO (SELECT FROM Genre WHERE type = "Drama")

CREATE EDGE belong_to FROM (SELECT FROM Movie WHERE name = "Winter's Bone") TO (SELECT FROM Genre WHERE type = "Thriller")

Im Anschluss daran ist es möglich in der Kommandozeile des GRAPH-Menüpunkts den dazugehörigen Graph zu plotten. Mit der Anfrage, die du im Code-Block unten siehst, ließe sich dies umsetzen.


SELECT * FROM belong_to

Der Klick auf einen Knoten ermöglicht es dir, diesen zu editieren, z.B. dahingehend, dass du bestimmen kannst, welche Eigenschaft des Knotens im Graphen letztlich abgebildet werden soll.

Graph Editor in der Weboberfläche von OrientDB

Des Weiteren bietet dir die Weboberfläche von OrientDB im SECURITY-Menüpunkt die Option Nutzer anzulegen und diesen spezielle Rechte zuzuweisen, wie z.B. Admin-, Lese und/oder Schreibrechte.

In der Weboberfläche von OrientDB Benutzer managen

Zudem ist es im FUNCTIONS-Tab möglich, benutzerdefinierte ausführbare Code-Einheiten zu definieren und zur Wiederverwendbarkeit für deine Abfragen zu speichern. Der Code übernimmt Parameter aus der Datenbank. Die auf Code-Basis erstellten Funktionen sind persistent. Sie sind in der Datenbank gespeichert und können von jedem Client aufgerufen werden. Du kannst derzeit Funktionen in den Sprachen SQL und JavaScript schreiben. Weitere Programmiersprachen sind in Planung.

In der Weboberfläche von OrientDB Funktionen managen

Fazit

Du hast einen Einblick in die wichtigsten Features von OrientDB bekommen und weißt nun, wie du die Datenbank-Plattform auf deinem Ubuntu-Server lauffähig machst. Vielleicht habe ich dich während der Simulation des Anwendungsszenarios auf ein paar Ideen für zukünftige Projekte gebracht oder du greifst demnächst irgendwann darauf zurück. Ich wünsche dir auf alle Fälle viel Spaß mit OrientDB.

Aus unserer Rubrik zu Open Source Datenbanken und Datenbank-Plattformen auch noch interessant und hilfreich:

Zurück zur Tutorial Übersicht Back to Tutorial Overview

© 2002-2023 Phox inc. all rights reserved.

© 2002-2023 Phox inc. all rights reserved.