MIS für Web-Zugriffe

Management-Informationsssystem für Web-Zugriffe

MIS für Web-Zugriffe
Die Arbeitsweise eines MIS-Systems soll an einem Beispiel aus dem Web-Bereich demonstriert werden.
MIS
Ein MIS besitzt als Kern einen sogenannten Datenwürfel. Dabei handelt es sich um eine mehrdimensionale, Matrix-ähnliche Struktur. Die einzelnen Dimensionen dieser Struktur sind typischerweise die Zeit, der Ort, Personen oder Personengruppen, z.B. Verkäufer(-gruppen), Kunden(-gruppen).

Die Daten, die an den einzelnen Stellen in dem (Hyper-)Würfel, englisch. hypercube, gespeichert sind, können im einfachsten Fall einfache Häufigkeiten sein, im allgemeinen werden aber mehrere unterschiedliche Größen gespeichert sein: Preis, Menge, ...

In dem zu implementierenden Beispiel sollen Web-Zugriffe verarbeitet werden. Hier soll ein vereinfachtes Modell des zu implementierenden System als Veranschaulichung dienen. Zu einem Web-Dokument sollen folgende Informationen gespeichert sein: vollständiger Dokumentenname einschließlich Pfad, remote host und Datum, als einziges Attribut die Anzahl der Zugriffe. Hier liegt also eine 3-dimensionale Struktur vor mit den Dimensionen Datum, remote host und Dokumentenname, also wird ein Attribut, eine Zugriffshäufigkeit durch einen Schlüssel mit 3 Komponenten identifiziert. Aus relationaler Sicht liegt also eine 4-stellige Relation vor mit 3 Feldern als Schlüssel und einem numerischen Feld als Attribut.

Zur Visualisierung der Daten in dem Würfel sind Projektionen in eine zwei- oder eindimensionale Darstellung notwendig. Hierzu gibt es im wesentlichen zwei Operationen:

  • für alle bis auf zwei Dimensionen eine Selektion mit einem festen Wert, zum Beispiel Selektion auf ein Dokument, auf einen remote host oder auf ein Datum.
  • für alle bis auf zwei Dimensionen eine Aggregation der Attributwerte, im Beispiel ein Aufsummieren über die Zeit, über alle Dokumente oder über alle remote hosts.
Bei diesem Vorgehen werden die entstehenden Matrizen im allgemeinen in beiden Dimensionen zu viele Werte haben, die Information ist also noch zu detailiert. Außerdem wird eine solche Matrix häufig nur dünn besetzt sein. Die einzelnen Dimensionen müssen also noch vergröbert und komprimiert werden und die Einträge weiter aggregiert werden, auch cluster-Bildung genannt.

Dazu werden auf den einzelnen Dimensionen Hierarchien definiert, im Beispiel auf dem Datumsbereich:
Tag --> Monat --> Jahr --> alle,
für die remote hosts die Domänen-Hierarchie:
www.fh-wedel.de --> fh-wedel.de --> de --> alle,
für die Dokumente die Verzeichnishierarchie:
/~si/vorlesungen/java/java.html --> /~si/vorlesungen/java/ --> /~si/vorlesungen/ --> /~si/vorlesungen/ --> /~si/ --> /. Über die einzelnen Schichten dieser Hierarchien können die Daten verdichtet und vergröbert werden.

Eine verdichtet Sicht auf einen Datenwürfel wird also festgelegt durch eine Reihe von Selektionen, eine Reihe von Aggregationen und zusätzlich Hierarchieebenen für die Vergröberung, die cluster-Bildung. Für eine Zugriffstatistik für alle Web-Seiten aus den Java-Vorlesungsunterlagen für das Jahr 1998 aufsummiert auf Monatsbasis von der Domäne de wären also folgende Operationen nötig:

  • eine Teil-Selektion auf die Dimension remote host mit de
  • eine Teil-Selektion auf der Datums-Dimension mit 1998
  • eine Teil-Selektion auf den Dokumenten mit /~si/vorlesungen/java/
  • eine cluster-Bildung auf der Datums-Dimension auf die Hierarchiestufe Monat
Die entscheidenden Operationen auf dem Datenwürfel, die sehr effizient auch für große Datenmengen arbeiten müssen, sind also die Selektion auf einen beliebigen Knoten einer beliebigen Hierarchie, und die Aggregation von Attributen pro Schlüsselwert in beliebigen Hierarchien. Standard SQL-Anfragen sind hier aus Geschwindigkeitsgründen nicht brauchbar.
Aufgabe
1.Teil
Entwicklung einer Java-Klasse für diese Art von Datenwürfeln, einschließlich Definition und Verwaltung von Hierarchien und effizienten Operationen zum Selektieren und Aggregieren und zum Füllen und Speichern.

Testen diese Systems mit Logging-Daten von WWW-Zugriffen.

2.Teil
Eine Präsentationsschicht für beliebige Anfragen auf einem Datenwürfel. Die Anfragen sollen über einen HTTP-server laufen können, zum Beispiel über CGI oder die servlet-Schnittstelle des Apache-Servers.

Die Implementierung kann auf 2 Arten gemacht werden:

  • reine HTML-Präsentationsschicht mit Ausreizen der Möglichkeiten von Tabellen, wie Hintergrundfarben, explizite Größenangaben, ...
  • mit Java-Applets und Torten- und Balkendiagrammen mit Java-beans, möglichst mit vorgefertigten beans.
Programmiersprachen und Werkzeuge
Für den Datenwürfel 100% pure Java, für die Präsentationsschicht Java und/oder HTML, JDK 1.1 oder Java 2 (JDK 1.2)
Umgebung
Für den Datenwürfel eine beliebige JVM, Für den Anschluß ans Web den Apache HTTP-server unter Linux/Unix
Testdaten
Die Datei log.txt.gz (35705 bytes) enthält Testdaten für die Web-Zugriffe (ungefähr 2490). Die Datei ist mit gzip gepackt. Das Format in dieser Datei ist folgendermaßen festgelegt: in jeder Zeile steht genau ein Zugriff. Die einzelnen Felder in einer Spalte sind durch ein Tabulatorzeichen getrennt. In der 1. Spalte steht das Datum, in der 2. die Uhrzeit, in der 3. das Dokument einschließlich search string, die 4. Spalte enthält den remote host, die 5. den referer und die 6. den browser.

Die Datei loglong.txt.gz (616147 bytes) enthält logging-Daten im gleichen Format, enthält aber 47619 Datensätze, mit denen ein Massetest durchgeführt werden kann.


Hauptnavigation