-
Notifications
You must be signed in to change notification settings - Fork 0
/
3.8.3.tex
69 lines (63 loc) · 3.43 KB
/
3.8.3.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
\subsection{Datenbankentwicklung}
\subsubsection{Systeminstallation}
Um die ArangoDB auf einen Linux Server zu installieren folgt man den Anweisungen auf der Webseite von ArangoDB.
\lstsetconsole
Als ersten Schritt muss ein Repository-Schlüssel dem Paket-Manager \texttt{apt} hinzugefügt werden.
\begin{lstlisting}[language=bash, caption=Hinzufügen des Repository-Schlüssels für ArangoDB]
curl -OL https://download.arangodb.com/arangodb37/DEBIAN/Release.key
sudo apt-key add - < Release.key
\end{lstlisting}
Anschließend kann über den Paketmanager die Installation folgen:
\begin{lstlisting}[language=bash, caption=Installieren von ArangoDB mit Package Manager]
echo 'deb https://download.arangodb.com/arangodb37/DEBIAN/ /' | sudo tee /etc/apt/sources.list.d/arangodb.list
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install arangodb3=3.7.3-1
\end{lstlisting}
Nachdem die Installation abgeschlossen wurde, kann der automatisch gestartete ArangoDB-Services wieder gestoppt werden. Diese Schritte werden nacheinander auf allen vier Nodes im Cluster ausgeführt. \cite{ADB_install}
Um nun einen ArangoDB-Cluster zu starten, haben wir den ArangoDB Starter verwendet. Der Starter ist ein \ac{CLI}-Tool, welches über Parameter die Optionen eines Datenbankservers konfiguriert.
Für unseren Cluster haben wir für den Hauptserver (Node-4) folgende Konfiguration gewählt:
\begin{lstlisting}[language=bash, caption=Starten des Hauptservers]
sudo arangodb \
--starter.data-dir=/data/team38 \
--server.storage-engine=rocksdb
\end{lstlisting}
Alle weiteren Nodes wurden mit diesem Befehl mit dem Datenbankserver von Node-4 verbunden:
\begin{lstlisting}[language=sh, caption=Zuscahlten der anderen Datenbankserver für Cluster]
sudo arangodb \
--starter.join c017-node4 \
--starter.data-dir=/data/team38 \
--server.storage-engine=rocksdb
\end{lstlisting}
\citep{ADB_starter}
\subsubsection{Datenmodellierung und Beispielschema}
Um den Use Case für den Graphen so verständlich wie möglich zu gestalten, haben wir uns ein einfaches Schema entschieden. Es besteht aus genau zwei Entitäten. Eine Collection, welche Autodaten enthält und eine weitere Collection, die die Kanten für unseren Graphen enthält. Diese Kanten zeigen von einer Auto-Entität auf eine andere Auto-Entität.
\begin{figure}[htbp]
\centering
\includegraphics[width=.7\textwidth]{./images/8.Schema.png}
\caption{Implementiertes Beispielschema}
\label{fig:DataSchema}
\end{figure}
\subsubsection{Import der Beispieldaten}
\lstsetjavascript
Über das Webinterface der Datenbank lassen sich für jede Collection über ein \ac{JSON}-Import Daten importieren.
Ausschnitt von Car Beispieldaten:
\lstinputlisting[linerange={1-9}, caption=Beispieldaten Auto, label=Beispieldaten Auto]{./json/cars.json}
Ausschnitt von Event Beispieldaten:
\lstinputlisting[linerange={1-9}, caption=Beispieldaten Event, label=Beispieldaten Event]{./json/events.json}
\subsubsection{AdHoc-Anfragen}
\lstsetconsole
\begin{lstlisting}[language=bash, caption=CREATE von Auto]
INSERT {_key:"B-AB-123", color:"pink", year: 2009, model: "AUDI"} INTO cars
\end{lstlisting}
\begin{lstlisting}[language=bash, caption=SELECT von Auto]
FOR car IN cars
FITLER car._key="B-AB-123"
RETURN car
\end{lstlisting}
\begin{lstlisting}[language=bash, caption=UPDATE von Auto]
UPDATE "B-AB-123" WITH {color: "red"} IN cars
\end{lstlisting}
\begin{lstlisting}[language=bash, caption=DELETE von Auto]
REMOVE "B-AB-123" IN cars
\end{lstlisting}