Blog

LogStore Projektbericht 1

Aktualisiert Oktober 22, 2025
3 Minuten

Dies ist das erste Update, seit wir mit der Entwicklung des LogStore begonnen haben. Trotz der holprigen Fahrt haben wir eine ganze Menge erreicht.

Zusammenfassend lässt sich sagen, dass der LogStore eine Speicherlösung für die Protokollierung von Anweisungen ist. Er basiert auf CouchDB (dokumentenorientierte Datenbank) und Elastic Search (schemalose Suchmaschine). Die Ansicht der gespeicherten Log-Statements basiert auf CouchApp, einem Tool auf CouchDB zur Erstellung von HTML-Seiten, die direkt von CouchDB anstatt von einem separaten Anwendungsserver bedient werden.

<span style="font-size: 11.0pt; line-height: 115%; font-family: Calibri,sans-serif;">Wie ich schon sagte, hatten wir eine holprige Fahrt. Es hat eine ganze Weile gedauert, bis wir auch nur eine einzige Seite in den Browser geladen hatten. Während wir mit Copy&Paste-Aktionen mit Javascript-Schnipseln aus dem CouchApp-Beispielprojekt rangen Sofa lernten wir nicht wirklich die Idee hinter CouchApp. Was wir damals lernten, war, dass es eine große Anzahl von Beispielanwendungen mit allen möglichen Arten der Implementierung der Funktionalität, des Templating usw. gibt. Wir haben auch gelernt, dass unser Wissen über Javascript und die damit verbundenen Technologien nicht wirklich auf der Höhe der Zeit ist. Das Fehlen eines Tutorials oder einer Dokumentation für Javascript-Neulinge war ebenfalls nicht gerade förderlich für den Erfolg.

In meiner Freizeit, angeheizt durch Frustration, machte ich einen Plan, um CouchApp und seine Beziehung zu CouchDB kennen zu lernen. Ich nahm mir die Online-Version von CouchDB, The Definitive Guide und begann zu lesen. Dort lernte ich (wieder, wie ich mich jetzt erinnere), dass CouchApp 'nur' ein Skript ist, das es einfach macht, ein Design-Dokument einer CouchDB-Datenbank zu schreiben. Das Layout einer CouchApp stellt die interne Struktur eines Entwurfsdokuments dar. Bei der Bereitstellung bündelt CouchApp Skripte wie List- und Show-Funktionen im Designdokument und kopiert es zusammen mit anderen Ressourcen wie clientseitigem Javascript und Bildern in eine CouchDB-Instanz.

Mit Hilfe dieser unvollständigen, aber wichtigen Informationen konnte ich eine Suchergebnisseite erstellen, die auf einer Eigenschaft eines Protokollelements und einer Detailseite des Protokollelements basiert. Die Suchergebnisseite besteht aus einer CouchDB-Ansicht, einem Controller-Skript(CouchDB list function) und einer Mustache-Vorlage. Die Detailseite besteht aus einem Controller-Skript(CouchDB show function) und einer Mustache-Vorlage. Für den Datenimport haben wir zwei kleine Java-Anwendungen entwickelt, die auf Ektorp basieren. Ektorp ist eine Persistenz-API für CouchDB, die Jackson für das JSON-Objekt-Mapping verwendet. Eine Anwendung liest eine (Log)-Datei und sendet die Log-Elemente einzeln an CouchDB, die andere liest eine (Log)-Datei im Speicher und führt eine Masseneinfügung der Log-Elemente in CouchDB durch. Es schien logischerweise, dass die letztere Anwendung bei weitem die schnellste war.

Und wie geht es weiter? Da wir noch nicht in eines unserer Hauptuntersuchungsthemen eingetaucht sind, wird Elastic Search das Thema der nächsten Sitzung sein, neben dem Hinzufügen weiterer Abläufe und Funktionen zur "CouchApp".

Wenn Sie sich über unsere Fortschritte informieren möchten, besuchen Sie https://github.com/xebia/logstore.

Contact

Let’s discuss how we can support your journey.