16.09.2015, 00:00 Uhr
Die eigene Datenbank-Klasse in C#
Als SQLite für seine Zwecke nicht mehr ausreichte, hat CodeProject-User Nam1222 eine eigene Datenbank in C# entwickelt und er lässt alle interessierten daran teilhaben.
Immerhin 4,5 MByte hat der Sourcecode der in C# geschriebenen Datenbank von Nam1222. Bekannte Probleme mit SQLite führten bei seiner Anwendung dazu, dass die Datenbank mit steigender Größe und immer mehr Lücken aufgrund gelöschter Datensätze immer langsamer wurde. Sein Ziel war es, eine eigene Datenbank zu entwickeln, die dasselbe Anfangstempo wie SQLite aufweist, aber mit wachsendem Datenbestand nicht langsamer werden würde -- seine Anforderungen waren mehrere Millionen Datensätze von jeweils 1 bis 8 KByte Größe. Das Ergebnis seiner Arbeit kann man einfach via GitHub auf seinen Rechner laden, oder seine Gedanken beim Erarbeiten der FooDB in seinem Artikel auf CodeProject folgen.
In diesem Artikel erfährt man, dass Nam1222 eine sehr spezielle Aufgabe zu erledigen hatte. Es ging nämlich darum, eine Datenbank für Kühe zu erzeugen, die neben Rasse, dem Namen und dem Alter des Tieres auch die DNA-Daten erfasst. Ausgehend von seiner Klasse CowModel erklärt er dann Schritt für Schritt, wie er die Datenbank in weniger als 32 Arbeitsstunden aufgebaut hat. Stets die Performance als Haupt-Entwicklungsziel im Blick. Er baut einen Blockspeicher, angepasst an die Blöcke des Dateisystems auf der Festplatte, weil dieser zu schnellen Datenzugriffen führt. Weil der Blockspeicher aber nicht direkt zu seinen Daten passt, denn deren Länge lässt sich nicht vorhersagen und variiert zwischen einem und acht KByte, setzt er darüber einen Datensatz-Layer.
Wie das ganze weitergeht, wie Indexe und Datenzugriff organisiert werden lesen Sie in diesem Fünf-Sterne-Beitrag auf CodeProject. [bl]