Institut für Kartographie und Geoinformation Seminar Geoinformation WS 2001/2202 Räumliche Anfrageverfahren Überblick Foliengliederung • Einführung, Wiederholung • Anfragebeispiele • I/O Algorithmen – bei riesigen Datensätzen, zwei optimale Algorithmen • external sort/merge • distribution sweeping (rectangle intersection) (fällt weg) 2 Einleitung Aufgaben eines Geoinformationssystems: • • • • • Erfassung Verwaltung Analyse Modellierung und Visualisierung von Geoinformationen. Die Analyse von Daten erfolgt von dem Benutzer des Geoinformationssystems. 3 Database Management System (DBMS) Eine Datenbank ist eine Ansammlung von untereinander in Beziehung stehenden Daten. (persistent,großes Volumen) Ein DBMS ist die Brücke zwischen den Daten und dem Benutzer: data independence: Repräsentation unabhängig von Speicherung!!! 4 Database Management System (DBMS) • logische Ebene – Datenstruktur festlegen (beispielsweise mit einem Diagramm) – Übersetzung in DBMS (mittels DDL) • physikalische Datenmanagement – – – – Speicherung (auf Disketten,CDs,etc...) günstige Datenzugriffspfade (B,R-Bäume...) access paths Query proccessing (effiziente Join Algorithmen konstruieren) Query optimization (Benutzer nur deklarierend, Berechnung Sache des Systems) – Datensicherheit Physikalisches Datenmanagement ist auf effiziente Berechnung von Anfragen ausgerichtet! 5 Relationale Datenbanken • • • • basieren nur auf Tabellen (Relationen) am meisten verbreitetes Modell ein geographisches Objekt ist eine Reihe oder ein Tupel Beispiel : Paris ist die Hauptstadt von Frankreich. Der Ausdruck „ist die Hauptstadt von“ ist eine Relation. Zwei Schritte: – konzeptuale Modellierung (Einträge und Relationen) – logische Ebene (selektierend oder generierend) • Nachteile: – Räumliche Anfragen verlangen Kenntnis der Struktur der räumlichen Objekte – Probleme beim Definieren neuer (räumlicher) Typen – und fehlende Möglichkeit zu Berechnungen wie adjacency test, point query und window query 6 Spatial Join (im relationalen Modell) DEFINITIONEN: • Join: Verknüpfung von 2 oder mehr Tabellen über mindestens ein beschreibendes Attribut alphanumerische Anfragen • Spatial Join: Verknüpfung von 2 oder mehr Tabellen über mindestens ein räumliches Attribut raumbezogene Anfragen Geographische Objekte bestehen aus • beschreibenden und • räumliche Attributen (Geometrie) 7 Query language im relationalen Modell SQL bei relationalen Datenbanken dominierend. Eigenschaften: • deklarierend (Benutzer drückt Ergebniswunsch aus ohne Systemanweisungen geben zu müssen) auch für weniger erfahrene Anwender geeignet • basiert auf soliden mathematischen Grundlagen • Nachteil: geringe Ausdrucksfähigkeit im Vergleich zu den Programmiersprachen wie C (z.B. keine Rekursion möglich) 8 Structured Query Language (SQL) • Syntax: - SELECT ... (Was soll gesucht werden?) - FROM ... (Wo soll gesucht werden ?) - WHERE ... (Welche Bedingungen gibt es ?) • logische (Boolesche) Operatoren: - UND, ODER -UNWAHR (NOT) - < , >, = • Verfeinerung der Anfrage - mehrere Anfragen nacheinander (select from current selection!) - Anfragen mit mehreren Kriterien 9 Abstract Data Types (ADTs) • Erweiterung des relationalen Modells notwendig, • ADTs (Strukturen und mögliche Operationen) - Bsp.: polygon and polygonarea • Encapsulation (Zugriff nur über die Operationen) Konflikt zwischen der Simplizität der Handhabung und dem Reichtum an der Darstellung und den Funktionen! 10 Objektorientierte Datenbanken • setzt wie die objektorientierten Programmiersprachen auf dem objektorientierten Paradigma auf. (Klassen und Objekte, Identifizierung, Kapselung, Vererbung) • hier OQL dominierend • ADTs auch werden hier verwendet: – eine Klasse entspricht der Implementierung eines ADT – ADTs Teil des objektorientierten Datenbankmodells – Zugriff auf Daten nur über die Methoden 11 ADT-Vorteile (am Bsp. region) • „region“ ist eine Liste von Operationen, Speicherung unwichtig • Trennung erlaubt freie Wahl der Raummodellierung • unterer Layer für oberen unsichtbar, demnach region „gleichwertig“ zu float oder string 12 Defining ADTs • region ADT: – PointInRegion, Overlaps, OverlapsRect, Intersection, Meets(Adjazenz), Area, RegionUnion • line ADT: – PointInLine, Length, OverlapsLR • point ADT: – Distance Das sind natürlich nicht alle möglichen Operationen! 13 Schema 1: administrative units Country County State Country-code State-code County-code Country-name State-name County-name Geometry Geometry Population Geometry Aggregation: Ganzes-Teile Hierarchie Das ist kein UML-Diagramm! Bei einem UML-Diagramm sind noch Operationen(Methoden) beschrieben(3-teilig). 14 Schema 2: highway network Highway Section Highway-code Section-code Highway -name Section-name Highway-type Number-lanes Geometry Starts-at Ends-at City „einer-zu-vielen“ Beziehung City-name Population Geometry 15 Schema 3: land use Wohngebiet, landwirtschaftliche Nutzung, Wald, Schule etc... .. 16 Anfragetypen Einteilung in folgende Typen: • ALPHANUMERISCHE ANFRAGEN • RÄUMLICHE ANFRAGEN: • INTERAKTIVE ANFRAGEN (ALPHA) (SPAT) (INTER) 17 Anfragebeispiele ALPHA • • • • ALPHA-ADM1: ALPHA-ADM2: ALPHA-ADM3: ALPHA-R1 : • ALPHA-R2 Einwohner im County of San Francisco Liste der counties im State of California Einwohner in den USA Anzahl der lanes im ersten Abschnitt des Interstate 99 : Namen aller sections, die den Interstate 99 bilden 18 Anfragebeispiele SPAT • SPAT-ADM4 : • • • • • Counties adjazent zum County of San Francisco im State of California SPAT-ADM5 : Anzeigen des State of California SPAT-ADM6 : Counties größer als ein vorgegebenes SPAT-R3 : Länge des Interstate 99 SPAT-ADM-R1: alle highways, die durch den State of California führen SPAT-ADM-LU1: Anzeigen von allen Wohngebieten im County of San Jose 19 Anfragebeispiele INTER • INTER-ADM7 : Beschreibung des am Bildschirm ausgesuchten counties • INTER-ADM8 : counties, die in einem auf dem Bildschirm vorgegebenem Rechteck liegen (intersect) 20 Einordnung • Spatial Access Methods (SAMs) reduzieren die Objekte, die bei dem Join berücksichtigt werden müssen. (mbb,grids,linear structures,(Gabriel),R-Bäume(Andreas) ,filter step). • Als nächstes käme der refinement step(Carsten). • Komplexe Anfragen und die Query Execution Plans wurden von Stefan behandelt. 21 Problem:Riesige Datenmengen Was ist zu beachten, wenn die Datenmengen nicht mehr in den Hauptspeicher passen? RAM = Random Access Machine (theoretisches CPU-Modell) Annahme: Jeder Zugriff auf die Daten hat einen konstanten „Preis“, unabhängig von der aktuellen Lage im Hauptspeicher. 22 Algorithmenoptimierung Der Design der Algorithmen wird auf die Minimierung der Diskettenzugriffe optimiert. Für jeden Algorithmus ist der Tranfer der Daten von oder zu einem externen Laufwerk die „key-operation“. Die Komplexität wird als Funktion der Anzahl der I/Os ausgedrückt. Die Wichtigkeit dieses Problems soll an einem kleinem Beispiel gezeigt werden: 23 Algorithmenoptimierung Auf dem Bildschirm werden 40 Gegenstände angezeigt, wobei auf eine Seite maximal 10 Gegenstände abbildbar sind. Diese sollen später gedruckt werden. In den Hauptspeicher, der nach dem LRU Prinzip arbeitet, passen nur 3 Seiten herein. Die Daten sind wie folgt verteilt: 1 5 9 13 ... Seite1 2 6 10 14 ... Seite2 3 7 11 15 ... Seite3 4 8 12 16 ... Seite4 24 Optimale I/O Algorithmen Annahmen: ein Laufwerk, ein Prozessor Definitionen: n Datengröße, m Hauptspeichergröße (jeweils in page units) Jeder Zugriff auf eine Seite der Diskette gilt als ein I/O. Obwohl sonst wichtig, wird hier also nicht zwischen sequentiellem oder zufälligem I/O unterschieden. 25 Sort/Merge (relationale Datenbanken) Sortieren ist eine Schlüsseloperation im query processing. Oftmal setzen Algorithmen sortierte Daten voraus. Sort/Merge:1.Top-down 2. Bottom-up (divide and conquer) join:linear time, sort(n log2 n) 7 5 1 34 6 8 2 7 5 1 3 4 6 8 2 5 7 1 3 4 6 2 8 1 2 3 4 5 6 7 8 Im Hauptspeicher wird Quicksort jedoch vorgezogen! 26 External Sort/Merge Bildung von initial runs: • m Pufferseiten im Hauptspeicher werden mit Daten gefüllt • interner Sortieralgorithmus (meist Quicksort) • die sortierten Blöcke werden auf die Festplatte geschrieben 27 External Sort/Merge 1 Block für Output,m-1 für Input , Einlesen der jeweils ersten Seite der (m-1) inputs in den Hauptspeicher, jeweils der „kleinste“ wird gepickt,dann merge,wenn ein Input run leer ist, wird der nächste eingeladen wenn Output-Block voll,dann in den Output-run schreiben und mit Outputs höherer Ordnung „mergen“ O(n logmn) 28 Danke für die Aufmerksamkeit Ein frohes Fest und einen guten Rutsch ins neue Jahr! 29