Sven Rautenberg: Schreibschutz einer Datei

Beitrag lesen

Moin!

Im Endeffekt will ich eine Art eigenes "Datenbank-System" erstellen. Klar, mySQL ist heutzutage wohl das Non-Plus-Ultra, aber ich wollte das ganze eben mal selbst implementieren, in erster Linie zur Übung und aus Interesse bzw. um die auftretenden Problematiken zu verstehen.

MySQL ist nicht das Non-plus-Ultra.

Und du arbeitest im Moment auch nicht an etwas ähnlichem, wie MySQL, sondern an etwas ähnlichem, wie der BerkeleyDB oder SQLLite - nämlich einem System, welches nur eine zentrale Speicherdatei kennt, die Zugriffe aber dezentral über jeweils eingebundene Bibliotheksmodule realisiert, und dabei natürlich gegenseitige Schreibzugriffe gegeneinander abschotten muß.

In dieser Hinsicht solltest du erst mal recherchieren. Stichworte, die ich dazu schon genannt hatte: "Semaphoren". "Locking-Konzepte".

Die Datenstruktur in der Datei ist ebenfalls relevant, denn eine Datenbank mit festen Feldlängen ist wesentlich berechenbarer und kann problemlos von verschiedenen Prozessen an unterschiedlichen Stellen parallel beschrieben werden, als wenn sich die Länge der gespeicherten Strings andauernd ändert, und somit die Datei auch andauernd komplett neu geschrieben werden muß.

Alternativ zu diesem dateibasierten Ansatz gibt es natürlich die Alternative, genau wie MySQL und alle anderen Datenbanken ein Serverprogramm zu schreiben, welches die komplette Kontrolle über die Daten behält und dadurch alles Locking intern zentral verwalten kann, sofern erforderlich. Die Kommunikation erfolgt dann nur über eine definierte Schnittstelle.

Du hast dir mit dieser Aufgabe allerdings wirklich ein Riesenstück Arbeit vorgenommen. Und ich bin sicher, dass es zu Lernzwecken vielleicht ganz interessant ist, sich für den produktiven Einsatz aber ab irgendeinem Punkt nicht mehr eignet. Du solltest dir also die Frage stellen, ob du dich wirklich zu einem Spezialisten für Datenbankherstellung entwickeln willst, oder ob es nicht ausreicht, dich zu einem Spezialisten für Datenbankbenutzung zu entwickeln.

Denn wären Datenbanken so einfach zu programmieren, wie Texteditoren, gäbe es nicht nur zwei Handvoll Datenbanksysteme - im Gegensatz zu hunderttausend Texteditoren. ;)

- Sven Rautenberg

--
My sssignature, my preciousssss!