Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:analyse_einer_wiki-datenbank

Analyse einer Wiki-Datenbank

Im Folgenden wollen wir eine Datenbank einer MediaWiki-Installation untersuchen. MediaWiki ist die wohl am weitesten verbreitete Wiki-Software, die auch bei Wikipedia zum Einsatz kommt.

ER-Modell

Den Daten von MediaWiki liegt ein großes und recht komplexes Datenbankmodell zugrunde, das oben abgebildet ist.1) In der Datenbank werden die Artikel, Benutzerinformationen, Kategorien und andere Entitäten abgelegt.

  1. Importiere die Datenbank.
  2. Analysiere die verschiedenen Tabellen gemäß des Schemas und versuche zu verstehen, was die Tabellen jeweils abspeichern und wie sie verbunden sind.

Analyse der Daten

In einem ersten Schritt wollen wir einige Analysen auf den Daten der Datenbank durchführen.

  1. Erstelle eine Abfrage, die für jeden Benutzer dessen Anzahl an durchgeführten Änderungen anzeigt. (Spalte: Benutzername, Echtname, Anzahl durchgeführte Änderungen)
  2. Erzeuge eine Ausgabe, die für jeden Benutzer des Systems die kumulierte Größe (in Byte) aller Veränderungen in aufsteigender Reihenfolge angibt. (Spalten: Benutzer, Summer der Änderungen (in Byte))
  3. Um die Akzeptanz des Wikis einschätzen zu können, ist ferner von Bedeutung, zu welchen Zeiten das Wiki genutzt wird. Erstelle eine Abfrage, die eine Tabelle erzeugt, die die Gesamtzahl der Änderungen am Wiki nach der Uhrzeit aufsummiert darstellt. (Spalten: Stunde, Anzahl Änderungen)
  4. Die bisherigen Untersuchungen haben die Beteiligung der Benutzer des Wikis betrachtet. Eine weitere statistische Grundlage für die Qualität des Wikis insgesamt und ein Mittel, um Stellen für mögliche Verbesserungen in einem Wiki zu identifizieren, stellt der Grad der Vernetzung der Artikel untereinander dar. Erstelle eine Abfrage, die die Anzahl der ausgehenden Links für jeden Artikel ausgibt. (Spalten: Artikelname, Anzahl ausgehender Links)
    So lassen sich „Hot Spots“ – also Artikel die in viele unterschiedliche Themenbereich diversifizieren – identifizieren. Diese Artikel haben häufig einen stark erklärenden Charakter und verweisen auf unterschiedliche Aspekte in ihren Unterseiten.
  5. Erstelle nun eine Abfrage, die eine Tabelle erzeugt, die für jeden Artikel die Anzahl der Verweise auf diesen Artikel zählt. (Spalten: Artikelname, Anzahl eingehender Links)

Daten um sensible Informationen bereinigen

Nun sollen die Daten um sensible Informationen bereinigt werden.

  1. Welche Daten sind als schützenswürdig einzustufen? Was sind also Personenbezogene Daten?
  2. Mit welchen Anweisungen lassen sich die Daten anonymisieren?

Verlinkung

Wir wollen nun die Verlinkungsstruktur der Artikel in unserem Wiki sichtbar machen. Hieraus soll erkennbar sein, welcher Artikel auf welchen anderen Artikel verweist.

  1. Erstelle eine SQL-Anweisung, die alle Links in unserem Wiki darstellt in der Form „von_Artikel“, „nach_Artikel“.

Page-Rank Algorithmus

Einer der Gründer von Google Lary Page. Er entwickelte den Page-Rank-Algorithmus, auf dessen Grundlage die Suchmaschine die Suchergebnisse sortiert. Auf einem Poster von Larry Page und Sergey Brin ist dieser Algorithmus in Kurzform dargestellt.

  1. Informiere dich über den Google-Pagerank-Algorithmus - z. B. in der Erklärung des Algorithmus
  2. Erstelle eine Präsentation, die den Algorithmus beschreibt. Erläutere ihn an einem Beispiel.
  3. Zeige die Funktionsweise des Algorithmus an den folgenden Beispielen für den Dämpfungsfaktor d=0,85. Berechne jeweils den Pagerank für die einzelnen Seiten.

Iterative Version des Page-Rank-Algorithmus

  1. Zunächst nehmen wir für alle Seiten den Pagerank (PR) 1 an.
  2. Wir setzen die aktuellen Werte in die Formel ein und berechnen den neuen PR.
  3. Dies machen wir so lange, bis wir keine großen Änderungen mehr sehen können.

Beispiel 3

A B C
1 1 1
0.575 0.575 1
0.575 0.575 1
0.394 0.394 0.639
0.317 0.317 0.485
0.284 0.284 0.419
0.270 0.270 0.391
0.264 0.264 0.379
0.262 0.262 0.374
0.261 0.261 0.372

Klassendiagramm/Programmierung

Nun wollen wir den Algorithmus nachprogrammieren.

  1. Welche Klassen benötigen wir?
  2. Erstelle ein Klassendiagramm.
  3. Implementiere die Klassen.

Für die Implementierung mit C# benötigst du einen sogenannten MySQL-Connector für C#, der als Bibliothek eingebunden werden muss. Danach kann über die die Klassen MySqlConnection, MySqlCommand, MySqlReader auf die Daten zugegriffen werden. Ein Tutorial beschreibt das Vorgehen und enthält Beispiel-Quelltext. Den allgemeinen Aufbau zeigt folgender Quelltext.

using System;
using System.Data;
 
using MySql.Data;
using MySql.Data.MySqlClient;
 
public class Tutorial
{
    public static void Main()
    {
        string connStr = "server=localhost;user=root;database=world;port=3306;password=******;";
        MySqlConnection conn = new MySqlConnection(connStr);
 
	Console.WriteLine("Connecting to MySQL...");
	conn.Open();
 
	string sql = "INSERT INTO Country (Name, HeadOfState, Continent) VALUES ('Disneyland','Mickey Mouse', 'North America')";
	MySqlCommand cmd = new MySqlCommand(sql, conn);
	cmd.ExecuteNonQuery();        
 
	string sql = "SELECT Name, HeadOfState FROM Country WHERE Continent='Oceania'";
	MySqlCommand cmd = new MySqlCommand(sql, conn);
	MySqlDataReader rdr = cmd.ExecuteReader();
 
	while (rdr.Read())
	{
		Console.WriteLine(rdr[0]+" -- "+rdr[1]);
	}
	rdr.Close();
 
        conn.Close();
        Console.WriteLine("Done.");
    }
}

Testen der Klassen

Die Klassen sollen nun getestet werden.

  1. Erstelle Testfälle für die obigen Beispiele.
  2. Teste die Klassen gegenüber den händisch berechneten Werten.

Für das dritte Beispiel kannst du den folgenden Quelltext für deine Tests verwenden.

Für Beispiel 3:

Ausgabe:

 Pagerank A:0,260869565217391
 Erwartet: 0,26
 Pagerank B:0,260869565217391
 Erwartet: 0,26
 Pagerank C:0,371739130434783
 Erwartet: 0,37

schule/analyse_einer_wiki-datenbank.txt · Zuletzt geändert: 19.04.2017 08:39 (Externe Bearbeitung)