FlatBox - Dokumentation

1. Einleitung

Die Idee

Im Internet müssen oftmals erzeugte oder von Usern eingegebene Werte auf dem Server gespeichert werden, damit sie beim nächsten Aufruf der Website wieder ausgelesen und weiterverarbeitet bzw. ausgegeben werden können (z.B. bei einem Besucherzähler, Gästebuch usw.). Dabei taucht natürlich die Frage auf, wie man solche Daten am besten abspeichert. Oftmals werden hierbei Datenbanken verwendet, sei es die wohl bekannteste Datenbank MySQL oder die wohl beste Datenbank PostgreSQL - das ist auch ganz verständlich, da hier eine bequeme Verwaltung von Datensätzen gewährleistet ist, sich einzelne Werte leicht verändern und neue sich ebenso leicht hinzufügen lassen.

Der Nachteil ist jedoch, dass der entsprechende Datenbank Server installiert und einem zur Verfügung stehen muss. Bei vielen Providern sind damit oft hohe Kosten verbunden. Wie lassen sich Daten nun also "anders" speichern, so dass keine MySQL bzw. PostgreSQL Datenbank benötigt wird und die oben genannten Vorteil wie die leichte Verwaltung trotzdem gewährleistet sind?

So ist die Idee naheliegend, die Daten in einfachen Textdateien, genannt Flatfiles abzulegen und später wieder dort auszulesen. Sofern man nur einen Wert (also nur eine Variable) speichern will ist das auch noch im höchsten Grade einfach. Mit den File-Funktionen von PHP kann man den Wert einfach in die Datei schreiben und ihn auch wieder auslesen. Möchte man allerdings mehrere Daten, also komplette Datensätze ablegen, dann muss eine Struktur ausgedacht werden, wie sich die Werte so ablegen lassen, dass im nachhinein jeder Wert wieder einzeln ausgelesen und verarbeitet werden kann.

Herkömmliche Methoden der Speicherung

Oft verwendet wird das sogenannte CVS-Format verwendet. Dabei werden die Daten wie folgt in eine Datei geschrieben:

Foo|bar|sonstnochwas
Nächerster|wert|bla

Allgemein gesehen also:

<wert><trennzeichen><wert>

Und das beliebig oft hintereinander. Im Beispiel oben wurde einfach mal das | Zeichen als Trennzeichen gewählt. Ein Zeilenumbruch verdeutlicht den Anfang eines neuen Datensatzes. So wird also pro Zeile ein Datensatz, der aus beliebig vielen Werten bestehen kann gespeichert.

Nachteil dieser Speichermethode: Die Zeichen welche eine Sonderbedeutung haben, also der Zeilenumbruch, sowie das gewählte Trennzeichen müssen sofern sie in den zu speichernden Werten vorkommen in irgend einer Art gesondert maskiert bzw. durch andere Zeichenabfolgen ersetzt werden.
Weiterhin muss die Struktur erst von Hand zusammen gebastelt werden, es existiert keine Name - Wert Zuweisung und letztlich lassen sich keine mehr-stufigen/-dimensionalen Daten ablegen.

SQLite in PHP 5

Grund genug also, sich etwas neues einfallen zu lassen. Und das haben nicht nur wir uns, sonder auch die PHP Entwickler sich neuerdings gedacht. Deshalb bringt PHP seit Version 5 ein System namens SQLite mit, welche ebenfalls Daten in Dateien ablegt, von der Bedienung her jedoch stark an MySQL angelehnt ist (daher auch der Name). Von dem was man als User mitbekommt handelt es sich also um eine abgespeckte Version von MySQL.

Nachteile von SQLite: SQLite ist standardmäßig erst ab PHP 5 dabei, wer es in den noch stark verbreiteten 4er Versionen nutzen will, wird wohl oder übel auf Probleme stoßen, insbesondere dann, wenn man nicht über ausreichende Rechte auf dem Server verfügt (was im Fall von Shared Web-Hosting oft so ist). Und selbst wer über PHP 5 verfügt, muss nicht auch zwangläufig über SQLite verfügen, da dieses entweder mitinstalliert oder dynamisch als Modul eingebunden sein muss.
Doch selbst wenn jetzt alle technischen Vorraussetzungen gelöst sind, so taucht doch immer noch das Problem auf, dass man keine mehr-stufigen Datensätze ablegen kann.

Und ein letzter Vorteil der FlatBox gegenüber SQLite: Die FlatBox ist etwas "selbst programmiertes" - es kann jederzeit nachvollzogen werden, was eigentlich da überhaupt passiert. Das System lässt sich also viel einfacher verstehen, ausbauen und natürlich auch debuggen.