Es geht auch ohne Datenbank

Die Komplexität des HomeBoards versuche ich so gering wie möglich zu halten.
Natürlich kenne ich den Drang und die Versuchung als Entwickler, die Dinge möglich „richtig“ oder auch „elegant“ zu machen.

Doch „richtig“ darf man nicht mit „komplex“ oder „neu“ verwechseln.
Nur weil eine Technologie neuer als eine andere ist, bedeutet es noch nicht, dass sie in jedem Fall dann auch die bessere ist. Nur weil eine Technologie für das eine Projekt passend war, muss sie das noch lange nicht für ein anderes sein.

„Richtig“ sollte auch auf „bewährt“ oder „passend“ zutreffen.
So setze ich in HomeBoard bewusst keine Datenbank ein.

ToDos, Einstellungen oder auch die Liste der Geburtstage stehen in einer simplen JSON-Datei.
Nun würde diese Art der Datenspeicherung in einem Multiuser-Szenario vermutlich nicht mehr gut skalieren oder man hätte ggf. eine unüberschaubare Flut an Dateien auf der Platte.

Doch bei der Entscheidung, wie die Daten gespeichert werden müssen viele Dinge in Betracht gezogen werden. Zum Beispiel: Welche Projektgröße habe ich überhaupt?

Vorteil Queries?

Der große Vorteil einer Datenbank ist die Möglichkeit, Daten über Queries sehr schnell zu selektieren und einzusammeln.

Die Inhalte der JSON-Dateien bilden beim HomeBoard nun aber genau den Stand ab, der auch angezeigt wird.

Die Daten in der Datei mit den ToDos einer Person (oder auf ein Thema bezogen) wird so wie es ist ausgelesen und angezeigt.

Ich muss nicht aus einer Tabelle mit 400.000 Daten die entsprechenden Einträge für diesen oder jeden User herausfischen.

HomeBoard ist nicht für ein Multiuser-Szenario ausgelegt und es ist auch nicht vorgesehen, HomeBoard ggf. mal in einer Cloud laufen zu lassen und mehrere Tausend Benutzer zu bedienen.
HomeBoard wird hier im Haus im Keller auf einem RaspberryPi instaliert.

Weniger Dateichaos?

In einem Multiuser-Szenario wäre wohl etwas mehr Ordnung im System.
Je mehr User, desto mehr Dateien liegen auf der Platte – könnte eventuell schnell unübersichtlich werden.

Aber ein Multiuser-System habe ich ja nicht. Es ist also nicht zu erwarten, dass ich auf der Platte irgendwann mehrere hundertausend Dateien liegen habe.

Doch klar: auf der Platte liegt jede ToDo-Liste eine JSON-Datei. Doch wieviele werden das sein? HomeBoard bildet den Datenstand meiner Familie ab. Möglich, dass ich 4 oder 5 ToDo-Listen habe und somit auch 4 oder 5 Dateien.

Auch die Geburtstage von Bekannten und Freunden sind in einer JSON-Datei gespeichert. Möglich, dass ich mehrere Geburtstageskalender in HomeBoard darstelle und nach Familienmitgliedern und/oder Kontext (Freunde/Arbeitskollegen) auftrennen möchte. Aber auch dann komme ich auf eine endliche Anzahl an Dateien, da nur ein 4 Personen Haushalt sind.

Das ist alles überschaubar und es kann kaum die Rede von einer nicht mehr überschaubaren Datenflut sein.

Der große Nachteil der Datenbank

Ein ganz großer Nachteil, den ich mir mit dem Einsatz einer Datenbank in diesem Projekt reinholen würde: ich habe keinen Editor mehr.

Das HomeBoard kommt derzeit komplett ohne Eingabe aus. Zwar kann ich eine Aufgabe als Erledigt markieren, ich kann derzeit aber über das HomeBoard keine neuen Aufgaben erstellen.
Auch kann ich keine neuen Geburtstage anlegen. Wenn ich neue Daten anlegen möchte, so geht das derzeit nur über den Texteditor.

Zugegeben ist aktuell noch etwas unelegant und sicherlich werde ich irgendwann einmal ein einfache Möglichkeit schaffen, Aufgaben direkt über das HomeBoard zu erstellen. Aktuell muss ich es aber nicht.

Die JSON-Datei mit einer ToDo-Liste sieht denkbar einfach aus:

Bei den wiederkehrenden Aufgaben, sind alle Informationen über das Intervall auch direkt am Datensatz gespeichert:

Es kommen einfach nicht oft genug neue (wiederkehrende) Aufgaben hinnzu, dass ich mich jetzt hinsetzen müsste und einen komplexen Eingabeeditor baue.

Die Liste der Geburtstage sieht ähnlich simpel aus:

Sicher: SO könnte ich das nicht auf die Menschheit loslassen. Ich könnte von einem Kunden nicht erwarten, die Datei im System zu öffnen und hier alles korrekt einzutragen.

Ich selbst kann das aber, und es erspart mir für den Moment eine Menge Komplexität.

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert