Open Source im professionellen Einsatz
Linux-Magazin 11/2007
321

Doppelte Buchführung

Bei der Registrierung eines neuen Benutzers gibt dieser seine E-Mail-Adresse an. Eine weitere Suche nach der Adresse prüft, ob sie nicht bereits von einem anderen Konto verwendet wird. Deswegen ist ein weiterer Suchbaum erforderlich. Um die Benutzerdaten nicht doppelt zu speichern, führt dieser Baum nur einen Zeiger auf das eigentliche Benutzerobjekt. Dieses Verfahren verwendet man auch bei SQL-Datenbanken und spricht vom Primärindex und den Sekundärindizes. Nur dass die Suchbäume dort auf der Festplatte und nicht im Hauptspeicher abgelegt sind.

Natürlich bedeutet es etwas Programmierarbeit, alle benötigten Indizes zu pflegen. Das betrifft nicht nur das Anlegen und Löschen von Datensätzen. Auch beim Ändern von Werten, zu denen es einen Index gibt, muss die Webanwendung diesen aktualisieren. Ändert ein Benutzer seine E-Mail-Adresse, muss der Eintrag vor der Änderung aus dem Mailindex entfernt und danach mit dem neuen Wert wieder eingefügt werden.

Wer suchet ...

Listing 2 zeigt ab Zeile 6 die Funktion »createArticle()« der Klasse »Engine«, die einen Tauschartikel anlegt. Im Beispiel pflegt sie zwei Indizes, und zwar »_articlesByID« für das Finden eines Artikels nach der ID (Zeile 13) sowie »_articlesByPrice« für das schnelle Finden der billigsten Artikel (Zeile 16).

Zwischen den verschiedenen Datensatztypen gibt es Beziehungen. So hat jeder Artikel einen Eigentümer »owner«. Relationale Datenbanken bilden Beziehungen eines Datensatzes zu einem anderen über den Primärschlüssel. Bei den Tauschzone-Benutzern wäre das der Anmeldename. Bei LOA gibt es aber immer noch als zweite Möglichkeit das Speichern eines direkten C++-Zeigers auf den Datensatz. Dieser braucht nur wenig Speicherplatz und kommt vor allem ohne Index aus. Der gesuchte Datensatz ist gewissermaßen nur einen CPU-Befehl weit entfernt.

Beim Einsatz einer SQL-Datenbank müsste diese erst eine Anfrage der Art »SELECT * FROM user WHERE nick= \'mathi\'« ausführen, inklusive SQL-Parser, Datenübertragungen, Konvertierungen und vielem mehr. In Listing 1 findet sich mit »_owner« ein direkter Zeiger vom Artikel auf den Benutzer.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Meteor

    Javascript sowohl im Browser als auch auf dem Server: Das Webframework Meteor verspricht Anwendungen aus einem Guss, die sich dank vieler fertiger Pakete rasch programmieren lassen.

  • Backbone.js

    Die Javascript-Engines moderner Browser sind leistungsfähig genug, um die Anwendungslogik zu übernehmen. Wie auf dem Server beschleunigen auch hier Frameworks die Entwicklung. Ein herausragendes Beispiel für diese Gattung ist Backbone.js, das ein lokales Datenmodell umsetzt.

  • Gesichert wie eine Bank

    Die beliebte Open-Source-Datenbank MySQL kennt verschiedene Möglichkeiten der Datensicherung. Jede hat Vor- und Nachteile, die jedoch nur unter bestimmten Umständen gravierend sind.

  • Django

    Alle befragten Django-Entwickler waren über die vom Linux-Magazin gestellte Aufgabe nicht glücklich: Mit einem CMS sei das wesentlich einfacher zu lösen, hieß es. Autor Sven Schannak zeigt, wie es trotzdem klappt.

  • Perl-Snapshot

    Größere Dateien tauscht die Jugend heute gerne über den proprietären Dropbox-Service aus. Dessen Web-API erlaubt auch den Einsatz selbst geschriebener Skripte, beispielsweise zum Abholen einer Datei aus dem Schatten einer Firewall.

comments powered by Disqus

Ausgabe 10/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.