© Scharfsinn/Shutterstock.com
Teil 2: Sortieren und Suchen mit PHP und JavaScript

Aufgeräumt! Daten für Webapplikationen


Sortier- und Suchalgorithmen gehören zu den Basiskonzepten der Informatik. Nach dem allgemeinen Überblick über diese Algorithmen betrachten wir nun die Programmierung in PHP und JavaScript. Zur Auswahl stehen eigene Implementierungen oder fertige Funktionen der Programmiersprachen.

Im ersten Teil der Artikelserie haben wir einen kompakten Überblick über die gängigen Such- und Sortieralgorithmen gegeben. Üblicherweise gilt es, eine bestehende Menge an Daten zunächst nach einem bestimmten Schlüssel zu sortieren, um dann darin nach den gewünschten Informationen zu suchen. Die Algorithmen unterscheiden sich durch ihre typischen Eigenschaften und ihre Stabilität. Beim Thema Stabilität wird geschaut, ob eine gegebene Reihenfolge der Elemente bei identischen Sortierschlüsseln beibehalten wird und wie hoch der Bedarf an Speicherplatz ist. Wir hatten folgende Sortierverfahren analysiert und uns deren grundsätzliche programmiertechnische Umsetzung angesehen: Bubblesort, Insertionsort, Mergesort, Quicksort, Selectionsort und Shellsort. Ebenso haben wir einen Blick in die Ansätze zum parallelen Sortieren gewagt. So weit die Theorie. In diesem Artikel betrachten wir die Praxis. Wir zeigen die Implementierung und den Einsatz von Sortierverfahren auf dem Client in der Programmiersprache JavaScript und auf dem Server in PHP.

Auf dem Client oder auf dem Server

Webapplikationen sind ein Zusammenspiel der unterschiedlichen Technologien. Auf dem Client (Browser) kommen HTML (Struktur), CSS (Layout, Design) und JavaScript (Logik, Interaktion) zum Einsatz. Die Daten stammen in der Regel von einem Datenbankserver. Alle Dateien für die Verarbeitung im Browser werden vom Webserver gesendet. Das typische Zusammenspiel von Webbrowser (Client), Webserver, Web Application Server und Datenbankserver ist in Abbildung 1 zu sehen.

krypczyk_bochkor_aufgeraeumt_1.tif_fmt1.jpgAbb. 1: Grundsätzliche Funktionsweise einer Webapplikation

Als Erstes stellt sich die Frage, wo die Datenverarbeitung, das heißt das Sortieren der Datensätze und das Suchen der relevanten Informationen, stattfindet. Das ist von der gewählten Architektur der Webapplikation abhängig. Bekanntermaßen können wir hier sehr grob in client- und serverseitige Webapplikationen differenzieren. Dabei können wir die folgenden Merkmale der client- und serverseitigen Verarbeitung (Programmiersprache) feststellen:

  • Serverseitige Programmiersprache: Der Benutzer ruft die Webseite auf und sendet die Anfrage an den Server, auf dem die Webseite gespeichert ist. Auf dem Server bekommt die Anfrage ein Serverdienst bzw. Webserver, der für die Auslieferung von Webseiten zuständig ist. Der Webserver verarbeitet den Programmcode durch den PHP Interpreter und übermittelt die fertige Webseite an den Client. Die Webseite enthält keinen Programmiercode, sondern lediglich HTML- und CSS-Code, der vom Browser verarbeitet wird und den Inhalt entsprechend darstellt.

  • Clientseitige Programmiersprache: Der Benutzer ruft eine Webseite auf und sendet die Anfrage an den Server, auf dem die Webseite gespeichert ist. Auf dem Server geht die Anfrage an einen Serverdienst bzw. Webserver, der für die Auslieferung von Webseiten zuständig ist. Die Webseite enthält keinen serverseitigen Programmiercode, sondern clientseitigen. Da der Webserver nur für serverseitigen Programmiercode zuständig ist, wird die Webseite in Form von HTML-, CSS- und JavaScript-Code an den Client übermittelt. Der Browser verarbeitet den JavaScript-Code und passt zum Beispiel die Inhalte und das Design, in der Regel auf der Basis einer DOM-Manipulation, direkt an.

Beide Vorgehensweisen haben Vor- und Nachteile. Wir wollen sie hier nur anreißen, da die Frage der Architektur einer Webapplikation sehr viele Aspekte berührt und nicht primärer Gegenstand des Artikels ist. Einige Vor- und Nachteile wirken sich jedoch unmittelbar darauf aus, ob man Sortier- und Suchfunktionen eher clientseitig (JavaScript) oder serverseitig (zum Beispiel PHP) programmieren sollte. Wenn man mit clientseitigem Programmcode arbeitet, kann die Verarbeitung des Programmcodes vom Anwender unterbunden werden. Daher haben alle gängigen Browser die Möglichkeit, die Verarbeitung von clientseitigem Programmcode auszuschalten, d. h. die Ausführung von JavaScript-Code zu unterbinden. Grundsätzlich können wir zwar heute davon ausgehen, dass der Anwender die Ausführung zulässt, doch garantieren kann man es nicht. Im Fall einer umfassenden Datenverarbeitung müssen zunächst alle Daten lokal vorhanden sein, man muss sie also herunterladen und zwischenspeichern und kann sie erst dann im Browser mit JavaScript verarbeiten. Werden die Daten ausschließlich auf dem Server verarbeitet, werden an den Client lediglich die relevanten Daten übermittelt. Das bedeutet jedoch auch, dass bei einem Aktualisierungsbedarf die Daten komplett neu geladen werden müssen. Sie sind jedoch deutlich besser gegen Manipulationen geschützt.

In der Praxis wird man in der Regel beide Technologien, d. h. client- und serverseitige Programmierung, miteinander kombinieren. Dabei gibt es eine Reihe von Ansätzen und Kombinationsmöglichkeiten (Abb. 2).

krypczyk_bochkor_aufgeraeumt_2.tif_fmt1.jpgAbb. 2: Optionen der client- und serverseitigen Verarbeitung bei einer Webapplikation

Während man in der Vergangenheit in der Regel so vorgegangen ist, dass man nahezu sämtliche Aufgaben der Datenverarbeitung auf den Server verlagert hat und clientseitig lediglich einige Funktionen, wie zum Beispiel die Datenvalidierung, implementierte, hat sich das Bild in der letzten Zeit deutlich gewandelt. Reaktive Webapplikationen setzen voraus, dass auf Basis von JavaScript eine umfassende Verarbeitung der Daten im Browser stattfindet und damit die Netzwerkkommunikation weniger intensiv genutzt wird. Die typischen Frontend Frameworks wie Angular, React usw. sind dafür ein gutes Beispiel. Das kann sich in der Praxis auch so darstellen, dass Funktionen zum Sortieren und Suchen in den Datenbeständen auf bei...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang