Datenbanken Variable Datenselektion für OLTP- und OLAP-Systeme Volker Ricke, POINT. Consulting GmbH Wäre es nicht gut, eine wiederverwendbare Selektions-Komponente zu haben, die für beliebige Datenquellen eingesetzt werden kann? Eine Antwort auf diese Fragen ist die im Rahmen eines Kundenprojekts entstandene Variable Selektion. Wie oft haben Sie schon AbfrageDialoge für Ihren Kundenstamm geschrieben? Hier eine Suchmaske für das Stammdaten-Modul, dort eine Parametermaske für die Ausgabe von Reports, dann noch ein Filter für Data-Warehouse-Auswertungen? Wie oft haben Sie an mehreren Stellen Programmänderungen vornehmen müssen, nachdem ein wichtiges neues Kriterium gefordert wurde? Für die Entwicklung neuer Planungs- und Auswertungssysteme hatte ein Unternehmen großen Bedarf an fein granulierten Abfragemöglichkeiten über Stamm- und Bewegungsdaten. Abfragen sollten vom Anwender gespeichert und wieder verändert werden können, ihre Ergebnisse sowohl in Online-, als auch in Batchprogrammen zur Verfügung stehen. Zusätzlich geforderte Abfragemöglichkeiten und Strukturänderungen an den abgefragten Tabellen waren möglichst ohne Programmieraufwand zu implementieren. Zielplattform war zunächst die für die OLTP-Systeme genutzte Oracle Datenbank, als Clients waren .NET Windows Forms-Applikationen vorgesehen, die auch als Parameter-Formen für Crystal-Reports dienen sollten. Stand zunächst nur die Selektion von Kundendaten im Fokus, wurde die Variable Selektion in der Folgezeit auch zur Definition von Berechtigungsgruppen im HR-Bereich sowie mit Konsumenten-Daten im KampagnenManagement eingesetzt. Auch in die Data-Warehouse-Welt schaffte die Variable Selektion den Sprung, hier wurde sie als vorgeschalteter Datenfilter für multidimensionale Analysen integriert. 30 | www.doag.org Die Idee hinter der Variablen Selektion Die Variable Selektion wird über Metadaten konfiguriert, die in einem Datenbank Repository gespeichert sind. In ihnen ist definiert, was grundsätzlich selektiert werden kann (Selektionsquelle) und wie es sich dem Anwender gegenüber darstellen soll (Selektionssicht). Dank der Trennung von Quelle und Sicht muss eine Datenbasis nur einmal in der Quelle eingepflegt werden, während die je nach Einsatzzweck wechselnden Anforderungen an Auswahl und Anordnung der abfragbaren Felder in den Sichten berücksichtigt sind. Der Anwender speichert seine Abfragen als Selektionsregeln ebenfalls in der Datenbank, die Regeln lassen sich somit sowohl von Dialoganwendungen, als auch von Batchprozessen verwenden. Aus den eingestellten Regeln und den Metadaten werden zur Laufzeit SQL-Abfragen generiert und als Ergebnismenge ausgegeben. Zum Erstellen der Selektionsregeln und für die Pflege der Metadaten existieren Dialoganwendungen, das Generieren der dynamischen SQL Statements und Bereitstellen der Ergebnismengen übernimmt ein PL/SQL DatenbankPackage. Selektionsquellen, Attribute und Lookups Herzstück der Variablen Selektion ist die Selektionsquelle. Im einfachsten Fall basiert sie auf einer Tabelle mit einer Schlüsselspalte, die für die Selektion als Rückgabewert definiert ist. Auch Views, Materialized Views oder frei formulierte SQL-Abfragen können eine Quelle bilden. Abfragefähige Spalten oder Single Row Functions sind als Selektionsattribute definiert, in denen neben dem Abbildung: Informationsstruktur der Variablen Selektion Datenbanken Datentyp auch die Darstellung im Abfragedialog (Eingabefeld, Checkbox, Liste etc.) oder eventuelle Formatmasken hinterlegt sind. Zur Anzeige von Auswahllisten oder zur Validierung von Suchkriterien lassen sich Lookups definieren und mit Attributen verknüpfen. Aus der bisher beschriebenen Wurzel-Quelle wird das treibende SQL für die Abfrage generiert. Es können mit ihr per JOIN-Kriterium noch weitere Quellen verknüpft sein, deren Attribute in eine spätere Abfrage per Subselect eingebunden sind. Selektionssichten Ist in der Selektionsquelle erst einmal die Datenbasis definiert (zum Beispiel der OLTP-Kundenstamm mit seinen Detail-Tabellen und einigen Bewegungsdaten), wird in den Selektionssichten zusammengestellt, welche Attribute den Anwendern in den unterschiedlichen Anwendungen zur Suche angeboten und in welcher Struktur sie dargestellt werden sollen. Bindet eine Applikation die Variable Selektion ein, verweist sie immer auf eine solche Selektionssicht. Die selektierbaren Attribute können in der Sicht nach fachlichen Aspekten und unabhängig von der ursprünglichen Datenbankstruktur in einer Baumstruktur organisiert und bezeichnet werden. Die angebotenen Abfragekriterien lassen sich so einfach dem jeweiligen Anwendungszweck anpassen – der Anwender erhält nur die gerade sinnvollen Kriterien angeboten, bei abweichendem Fachvokabular können die Attribute unterschiedlich benannt werden. Mit der Option einer StandardWHERE-Klausel lässt sich die Ergebnismenge der Sicht weiter einschränken, per Verknüpfung mit einer VorschauDefinition sind Felder für einen Export freischaltbar. Die Selektionsregel enthält die Informationen, welche Attribute mit welchen Bedingungen (zum Beispiel „=“, „LIKE“, „>(=)“, „<(=)“, „BETWEEN“, „IN“ oder „IS (NOT) NULL“) und Werten der Anwender aus einer Selektionssicht abfragt. Die einzelnen Kriterien können „UND“-, „UND NICHT“- oder „ODER“-verknüpft sein. Auch bereits zur gleichen Sicht gespeicherte Regeln lassen sich hier einbinden und somit wiederverwenden. Variable Selektion aus Anwendersicht Der Anwender kann den Selektionsdialog einerseits direkt starten und auswählen, über welche der verfügbaren Sichten er eine Selektion öffnen oder erstellen möchte. Andererseits kann er per „Variable Selektion“-Schaltfläche aus einer Partner-Applikation heraus, aber auch direkt in die passende Sicht wechseln und eine Regel erstellen, deren Ergebnis er anschließend in seiner Applikation zum Filtern der Daten verwenden kann. Zur Plausibilitätskontrolle kann im Selektionsdialog die Anzahl der Treffer angezeigt werden. Außerdem steht eine in Excel exportierbare Vorschau der Daten zur Verfügung, über die so ein eigenes Ad-hoc-Reporting möglich ist. Eine Selektionsregel ist standardmäßig privat, ihr Eigentümer kann sie aber anderen Benutzern freischalten. In den meisten Projekten wurden die ein bis zwei gängigsten Abfragefelder innerhalb der Applikation implementiert, während die Variable Selektion als erweiterter Filter angeboten wird. Variable Selektion aus Administratorsicht Der größte Administrationsaufwand besteht im Einrichten der Datenquellen. Hier spielt natürlich eine Rolle, wie aktuell die abgefragten Daten sein sollen. Greifen die Datenquellen in der OLTP-Welt üblicherweise direkt auf die relationalen Tabellen der operativen Systeme zu, wird in der OLAP-Welt meist auf leichter auswertbare Materialized Views zurückgegriffen. Da die Datenquellen und ihre Verknüpfungen per SQL-Syntax definiert sind, können sie aber auch nachträglich umkonfiguriert und optimiert werden. Das Administrationsmodul bietet Unterstützung beim Import von Tabellen- und Spaltendefinitionen sowie der Spaltenkommentare in das Repository der Variablen Selektion an. JOIN-Krite- rien lassen sich aus bestehenden Foreign Key Constraints heraus ebenfalls generieren. Im Konfigurationsdialog für die Datenquellen können auch die Lookups definiert und Attributen zugeordnet werden. Setzt die Definition der Selektionsquellen noch gute SQL-Kenntnisse und Wissen über die Datenbank-Strukturen voraus, können Power-User oder der Application-Support die Selektionssichten auch pflegen. Für die Sichten steht daher ein eigener Konfigurationsdialog zur Verfügung. Hier werden die aus einer Datenquelle benötigten Attribute zur Verfügung gestellt, in Ordnern gruppiert und – falls gewünscht – umbenannt. Variable Selektion aus Entwicklersicht Dem Entwickler stehen PL/SQL- und .NET-Schnittstellen zur Verfügung. Über die .NET-Schnittstellen bindet er die Variable Selektion in seinen Client ein, per PL/SQL können Datenbankprozeduren auf Selektionsergebnisse zugreifen. Existiert bereits die für ein neues Projekt passende Quelle, muss der Entwickler sie nur noch um möglicherweise zusätzlich benötigte Attribute erweitern und initial eine neue Sicht definieren. Spätere Erweiterungen werden durch den Administrator eingepflegt, eine Programmänderung ist nicht erforderlich. Fazit Zwischen 2004 und 2008 ist die Variable Selektion mit den Projekten gewachsen und wird in vielen seiner Systeme als zentrale Suchkomponente eingesetzt. Der zunächst hohe Aufwand zur Entwicklung einer generischen, deklarativen Lösung hat sich gelohnt. Als „Abfallprodukt“ ist mit der konfigurierbaren Vorschau der Variablen Selektion ein intensiv genutztes Ad-hoc-Reporting-Werkzeug entstanden. Kontakt: Volker Ricke [email protected] DOAG News Q3-2009 | 31