Zusammenfassung
Die Möglichkeit, mit Hilfe einer Anfragesprache (query language) Anfragen (queries) an die Datenbank zu stellen, sei es durch ein Anwendungsprogramm oder aber ad hoc durch den Endbenutzer am Computer, und unmittelbar darauf eine Antwort vom System zu erhalten, gehört sicherlich mit zu den wesentlichsten Stärken eines DBMS. Anfragen wie „Welche Mitarbeiter der Firma X verdienen mehr als 3000 DM monatlich?“ oder „An welchen Stellen schneiden sich das Wasserwege-und das Straßennetz in der Bundesrepublik?“ können auf unterschiedliche Art und Weise mit unterschiedlichen Kosten ausgeführt werden. Ziel der Anfrageverarbeitung (query processing) ist es, eine gegebene Anfrage unter Ausnutzung logischer Gesetzmäßigkeiten und physischer Strukturen möglichst effizient auszuführen. Aus Sicht des DBMS ist eine Anfrage ein Programm, das übersetzt und ausgeführt werden muss. In diesem Sinne durchläuft eine Anfrage die üblichen, aus dem Übersetzerbau für Programmiersprachen bekannten Phasen der Programmübersetzung: lexikalische Analyse, Parsen (d.h. syntaktische Analyse), Validierung (d.h. semantische Analyse) und Code-Generierung. Hinzu kommt bei Datenbankanfragen allerdings noch ein zusätzlicher Aspekt, der vom meist nichtprozeduralen, deklarativen Charakter der Anfrage(sprache)n herrührt. Bei der Formulierung einer Anfrage beschreiben wir, was das Problem ist, anstatt dem DBMS mitzuteilen, wie das Problem zu lösen ist. Folglich muss das DBMS entscheiden, wie das Problem zu lösen ist, und, falls es mehrere Lösungsalternativen gibt, diejenige mit minimalen Kosten auswählen. Eine effiziente Anfrageauswertung hängt natürlich insbesondere davon ab, wie die Daten physisch gespeichert sind. Vorhandene Indexe können die Anfrageverarbeitung beträchtlich beschleunigen. Neben der vom Anfrage-Parser (query parser) durchgeführten Anfrageübersetzung (query translation) und der vom Anfrage-Ausführer (query executor) bewirkten Anfrageausführung (query execution) spielt also die Anfrageoptimierung (query optimization), für die der AnfrageOptimierer (query optimizer) zuständig ist, eine wichtige Rolle, um lange Ausführungszeiten zu vermeiden. Parser, Ausführer und Optimierer bilden zusammen den Anfrage-Prozessor (query processor). In diesem Kapitel werden wir uns hauptsächlich auf die Übersetzung, Optimierung und Ausführung von Anfragen, die auf dem relationalen Datenmodell beruhen, konzentrieren.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Author information
Authors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Schneider, M. (2004). Anfrageverarbeitung. In: Implementierungskonzepte für Datenbanksysteme. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-55888-7_7
Download citation
DOI: https://doi.org/10.1007/978-3-642-55888-7_7
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-41962-4
Online ISBN: 978-3-642-55888-7
eBook Packages: Springer Book Archive