ma_code
Dieses Repo beinhaltet den Code und die Datasets zur Masterarbeit "..." von Sven-Ove Hänsel. Während beim Branch 'memgraph_fabian' dieser Code benutzt und auf die Bachelorarbeit von Fabian Zachen anpasst wurde. (Verwendeter Compose File docker-compose_memgraph - Sub einzeln starten) (Code anderer Datenbanken größtenteis entfernt)
Änderungen
Es wurden wichtige Änderungen an vier Stellen vorgenommen. (mosquitto eher nicht gravierende Änderung)
Abfragen
/code/eval/queries/cyypher/memgraph/memgraph_queries.py Der Abfragen Code wurde insofern verändert, als dass für 'count' nur die Zahl ausgelesen wird, ansatt über das Ergebnis zu laufen (Zeile 72) (Vorher wurden alle Knoten zurückgegeben zum zählen). (Aufgrund der geringen Änderungen auch keine Kommentare ergänzt) Es ist wichtig hervorzuheben, dass die Abfragen aus /infrastructure/eval/queries/memgraph/queries/queries.txt geladen wird. Dort in einer anderen Datei sind einige der neuen Abfragen gespeichert.
Publisher
/infrastructure/streaming/clients/pub/pub_cdm.py Der Publisher wurde insofern editiert, als dass dieser mehrere Knoten und zugehörige Kanten in einer Nachricht versendet. (line 72 -74) (95-97) Ermöglicht die Originale Version auszuwählen mittels Compose Original true.
Subscriber
/infrastructure/streaming/clients/sub/memgraph Die meisten Änderungen befinden sich bei den Einfügeoperationen. Dabei wurden verschhiedene Varianten ausprobiert.
Diese Änderung hat eine eigene ReadMe Datei, diese verweist auch auf das benutzte Compose.
Compose
In Compose wurde der maximale RAM-Verbrauch von Memgraph limitert, als Folge wird Memgraph gekilled, sobald es mehr als diesen RAM nutzt. Dabei ist die Menge des RAM so gewählt, dass die gewünschten Operationen in diesen erledigt werden können. Ist dies nicht der Fall so liegt ein sehr hoher RAM Verbrauch vor. Weitere Änderungen wurde durchgeführt um die Subscriber einzeln zu starten und so einfacher austauschen zu können.
Troubleshooting
Fehler ab 2.000.000 Knoten eingefügt
Bei zwei Millionen Knoten kam es zu einem Fehler wodurch eine Nachricht nicht eingefügt wurde. Daraus entstanden Folgefehler, weshalb von 11.000.000 Knoten nur noch 2.500.000 eingefügt werden konnten.
Grund für den Fehler war, dass ein Zielknoten erst erstellt wurde, nachdem er bereits einmal benötigt wurde.
Lösung: Kollisionen innerhalb von Nachrichten behandeln. (hilft nur wenn nicht zufällig die Nachrichten zwischen den beiden aufeinanderfolgenden Knoten endet.)
Fehler ab 5.000.000
Bei fünf Millionen Knnoten kam es zu einem Fehler bei dem der zielknoten fehlte, dieser scheint entweder nicht erstellt worden zu sein, oder folgt ab 135 Knoten später.
Wurde nicht behandelt, möglicher Lösungsansatz in der Bachelorarbeit dargestellt unter Nachteile des inkrementellen und sortierten Ansatzes.