DATENBANKEN ALS BACKEND FÜR DIE KONFIGURATION UND VERWALTUNG VON HARD- UND SOFTWARE Was ist BESSY und wie funktioniert es eigentlich? BESSY Datenbank Was ist BESSY? Berliner Forschungsinstitut als Dienstleister in wissenschaftlich technischem Umfeld • Betreiber zweier Elektronenspeicherringe (3. Generation) mit Dipol-, Wiggler- und Undulatorstrahlrohren • Bereitstellung von Experimentierplätzen zur Nutzung der erzeugten brillanten Synchrotronstrahlung (langwelliger THz Bereich bis harte Röntgenstrahlung) • Entwicklung von Geräten und Instrumenten, physikalische Grundlagenforschung • Zusammenarbeit mit DAISY, PTB, HMI, MPG und andere internationalen Synchronstrahlenquellen weltweit P. Laux/BESSY BESSY Datenbank Funktionsweise Speicherring P. Laux/BESSY Durch magnetische Felder abgelenkte Elektronen erzeugen abhängig von der Stärke der Ablenkung Synchrotronstrahlung. Um eine Nutzung zu ermöglichen sind also verschiedene magnetische Elemente notwendig, die diagnostische und auch regelnde Eigenschaften haben müssen BESSY Datenbank Funktionsweise Geräte Undulator Wiggler ablenken P. Laux/BESSY BESSY Datenbank Funktionsweise Geräte Netzgerät Magnet Interfacekarte Strahlrohr uni/bipolar Steuerrechner NFS, TFTP EPICS, CA ADA, IO32 40.00V Netzwerk Strahllagemonitor Fehler, Probleme Anfrage, Werte Kontrollsystem, IRMIS P. Laux/BESSY BESSY Datenbank Funktionsweise Software der Leittechnik EPICS DB Kompilierung Templates, Scripte DARCS 3 Dialoge, Kernel 4 2 1 Oracle Kontrollsystem P. Laux/BESSY BESSY Datenbank Anforderungen Über 6000 Geräte bei BESSY 2 und bis zu 1000 bei MLS heterogene Geräte (vom Temperatursensor über IOC bis zum Microtron) steuern und verwalten Kontrolle softwaretechnisch durch Steuerung über IOCs mit EPICS Wartung und Kontrolle der Geräte und ihrer Konfigurationen Arbeitsgruppen brauchen gemeinsame Quelle OS unabhängige Wertedarstellung Anbindung an Programmiersprachen P. Laux/BESSY BESSY Datenbank Häufige auftretende Fragen Wo steht das Gerät? Welche Funktion hat das Gerät? Wer ist zuständig dafür? Welcher Typ von Gerät ist das? Welche Werte liegen aktuell an? Wird das Gerät überwacht? Wie kann das Gerät geregelt werden? P. Laux/BESSY Was war und was ist, eine Übersicht. BESSY Datenbank Geschichte und Gegenwart Jedes Gerät erhält einen eigenen eindeutigen Namen nach Namenskonvention. Aus dem kurzen Namen müssen Gerätefamilie, Gerätestandort ersichtlich sein und auch die Funktion Gerätefamilien/-gruppen sagen etwas über die Funktionalität aus Abhängigkeiten unter den Gerätefamilien beständig auflösen Arbeiten mehrerer Nutzer ermöglichen Parameter und Konfiguration formatfrei einsehbar und ermittelbar Sicherung der angefallenen Daten P. Laux, /BESSY BESSY Datenbank Der Name Zur eindeutigen Identifizierung der Geräte erfordert es eine BESSY-weiten Namensgebung. Definition als Regulärer Ausdruck: [A-Z]+([0-9]+(-[0-9]+)?)?[BCFGHIKMNOPQRSTVWXYZ][0-9]*([DTSX][09]*)?[BCGILMRTV][FP]? Nun in diesem Strickmuster stecken folgende Informationen: Name, bestehend aus alphabetischen Zeichen und numerischem Index Gerätefamilie aus einem unärem Zeichen Ort durch bilden eines hierarchischen Pfades Facility->Domain->Subdomain P. Laux/BESSY BESSY Datenbank Geschichte und Gegenwart Innerhalb der Gerätegruppen stellen die klassischen relationalen Ansätze eine heile Welt dar, jedoch übergreifend als zu fragmentiert und schlecht durchschaubar. Durch gesamtheitliche Komplexität gestalten sich Eingabehilfen als viel zu aufwendig und auch schwer wartbar, weil die Gerätegruppen extrem heterogene Daten enthalten. P. Laux, /BESSY BESSY Datenbank Beispiele - HF P. Laux/BESSY BESSY Datenbank Beispiele - CAD Die CAD Daten bestehen aus mehreren Messdatensätzen, von denen eine der Tabellen aktuelle Daten enthält. Bei dieser Struktur habe ich bereits eine Simplifizierung vorgenommen. Probleme hier, ohne richtige Umbauaktionen Dürfte sich dieses Problem so schnell nicht beheben lassen, da zu viele Anwendungen von diesen Daten abhängen. P. Laux/BESSY BESSY Datenbank Beispiele - PS Auch hier wurden sehr erquickliche Strukturen erzeugt. Doch in den beiden grossen Tabellen werden im Schnitt 8 Spalten beschrieben und benutzt, weil die Geräte entweder gar nicht allen Daten gerecht werden, die meisten sich zu oft ändern oder Geräte „mal eben schnell“ ausgetauscht werden. Böses Beispiel hier Wert start_i und neben Tabelle p_ps_bit_temp. P. Laux/BESSY BESSY Datenbank Beispiele - Views select pemi.mag_lock_key, pn.ps_key, pn.name ps, 0 magnet_key, '-' magnet, ioc.ioc_key, ioc.name ioc, asg, pemi.description, extension, znam, onam, calc, gui_sort from p_magnet_epics_interlock pemi, ps_names pn, ioc where pn.ps_key = pemi.ps_key and ioc.ioc_key = pemi.ioc_key union select pemi.mag_lock_key, 0 ps_key, '-' ps, m.magnet_key, m.name magnet, ioc.ioc_key, ioc.name ioc, asg, pemi.description, extension, znam, onam, calc, gui_sort from p_magnet_epics_interlock pemi, magnet_names m, ioc where pemi.magnet_key = m.magnet_key and ioc.ioc_key = pemi.ioc_key P. Laux/BESSY BESSY Datenbank Beispiele - Views select cad_key key, name, member, ind, family, counter, subdomain, domain, description from cad union select ps_key key, name, member, ind, family, counter, subdomain, domain, description from ps union select p_kick_names.kick_key key, name, member, ind, p_kick_names.family, counter, subdomain, domain, description from p_kick_names, kicker_ps where p_kick_names.kick_key = kicker_ps.kick_key union select drifts_key key, name, member, ind, family, counter, subdomain, domain, description from drifts union ..... P. Laux/BESSY BESSY Datenbank Geschichte und Gegenwart Für jeden Gerätetyp ein eigene Datenbankstruktur schwer wartbar als Admin, ca 250 Tabellen, 300 Triggern ca 350 Ansichten, materialisierten Views ca 400 Abhängigkeiten, unzählige Constraints dauernd fluktuierende Strukturen, invalide Views als Folge komplexe und komplizierte Zugriffe, Kommandozeilenzugriffe technisch mittelhoher Aufwand für Zugriffe auf die Werte Frontends irrwitziger Aufwand, keine GUI P. Laux, /BESSY Fehlendes Gesamtmodell führt zu hoher Fragmentierung Unions und verschachtelte Views verlangsamen extrem den Zugriff Inhaltliche Abhängigkeit der Strukturen sind untragbar Manuelle Wartung und Pflege notwendig bei übersichtlicher Anzahl von Views, Triggern und Tabellen Keine GUI wegen ausgewachsener heterogener Strukturen zu viele unterschiedlich Interessen bei Wertedarstellung inadäquate Namensgebungen Aufgeben oder etwas Anderes versuchen? BESSY Datenbank Der erste Test - Named-Value-Pairs P. Laux/BESSY BESSY Datenbank Der zweite Test Entwickelt für kleine Gerätegruppen, basierend auf den Named-Value-Pairs Perl/Tk-GUI vorhanden Flexibilität bei Benutzung durch direkte Eingabe des Entwicklers der Software Erstmals Daten für unterschiedliche Gerätefamilien in einer Struktur Template Problematik Nur für kleine Gerätegruppen LETZTES JAHR MIGRIERT P. Laux/BESSY BESSY Datenbank Erlerntes Erste Erkenntnis, entgegen des Verlustes der Information über den inhaltlichen Wert (Type, Länge, Maximal-/Minimalwerte, Constraints etc) kann die Flexibilität erhöht werden. Außerdem gibt zu viele Spezialwerte, um sie repräsentieren zu können. Nicht nur der Verwaltungsaufwand sank, sondern auch die kürzeren Reaktionszeiten auf Veränderungen machten sich bemerkbar. Möglichkeit einer Bibliothek für den Zugriff auf solche Strukturen erhöht die Akzeptanz. tapetenloses Arbeiten führt zu Entlastung GUI konnte erstmals fruchtbare erfolge erzielen Die Idee, das Modell nicht vertikal sondern horizontal anzulegen, bedeutet mit den gleichen Anwendungen mehrere Gerätefamilien zu bedienen. P. Laux/BESSY Überlegung: Verlagerung der logischen und mathematischen Operationen in die Programme und dafür eine flexible Datenbankstruktur zu schaffen. Simple-Devices folgend sollte einerseits die Komplexität der Datenstrukturen brechen, andererseits aber auch einen Zugriff aller anhängigen Programme ermöglichen. Zugriffsproblematik und Inhaltsversicherung sind ungeklärt. „Wir sind alle erwachsen, also sollten wir wissen, was wir tun.“ R. Müller „Es entwickelt sich...“ BESSY Datenbank Tiefenanalyse Strukturen der vorhandenen Daten ermitteln Programmalgorithmen betrachten und abwägen Anforderungen prüfen, Grenzwerte, Serialisierung Strukturen erkennen und ausformulieren, Beziehungen aufdecken Schnittstellen schaffen, Werkzeuge und deren Funktionalität klären Reden, Diskurs und Kompromisse finden im Zweifelsfall noch mal von VORNE anfangen P. Laux/BESSY BESSY Datenbank Tiefenanalyse Fast sämtliche Strukturen sind hierarchischer Natur Ableitung/Vererbung sind erwünscht Strukturinformationen müssen variabel sein, mit einfliessen können Daten müssen maschinen- und menschenlesbar sein möglichst keine objektrelationalen Ansätze bei prozeduralen, funktionalen Anwendungen Saubere offene Schnittstellen/API für Neuentwicklung und Migration Bevorzugte Nutzung von Skriptsprachen P. Laux/BESSY Die deskriptiven Gadgets, nichts sagend und doch mächtig BESSY Datenbank Gadgets – Die Idee IOC2 Quantitativ schwache Anforderungen, jedoch in sich sehr komplex und doch gut wartbar. Keine inhaltlich formale Bindung durch NamedValue-Pair-Struktur. Baumartige Struktur als Ziel der Ablage und Organisation. Leichte Indizierung, einfache Erweiterung und Anbindung an vorhanden Strukturen. Eine Datenbankstruktur für alle Gerätefamilien? Mehr als ein halbes Jahr theoretisch alle erkennbaren Problemfälle durchgespielt. P. Laux/BESSY BESSY Datenbank Gadgets - Beispiel Parent1 Child1 --PLSQLCode Appinit(‚TestApp‘); Red:=add gadget(‚red‘); Blue:=add gadget(‚blue‘); P1:=add_gadget(‚Parent1‘); C1:=add_gadget(‚Child1‘, P1, Red); C2:=add_gadget(‚Child2‘, P1, Blue); GC:=add_gadget(‚G-Child‘, C2, Red); A1:=add_gadget(‚ATTR1‘); A2:=add_gadget(‚ATTR2‘); A3:=add_gadget(‚ATTR3‘); add_attribute(C1, A1, ‚42‘); add_attribute(C1, A2, ‚Hello World‘); add_attribute(C2, A1, ‚3.14‘); add_attribute(C1, A1, ‚$ATTR1‘); add_attribute(GC, A1, ,4711‘); add_attribute(GC, A1, ‚0‘); P2:=add_gadget(‚Parent2‘); add_relation(P2, C2, Red); IOC2 Parent2 Child2 ATTR1 42 ATTR2 Hello World! G-Child ATTR1 3.14 ATTR1 4711 ATTR3 $ATTR1 ATTR2 0 P. Laux/BESSY BESSY Datenbank Gadgets - Inhalt Parent1 Parent2 TBL_GADGET gadget_key name 1 Admin 2 TestApp 3 Red 4 Blue 5 Parent1 6 Child1 7 Child2 8 G-Child 9 ATTR1 10 ATTR2 11 ATTR3 12 Parent2 IOC2 Child1 Child2 ATTR1 42 ATTR2 Hello World! TBL_GADGET_RELATION parent_key child_key type_key 5 6 5 7 7 8 12 7 G-Child ATTR1 3.14 ATTR3 $ATTR1 ATTR1 4711 ATTR2 0 app_key Admin Admin TestApp TestApp TestApp TestApp TestApp TestApp TestApp TestApp TestApp TestApp app_key 3 4 3 3 2 2 2 2 TBL_ATTRIBUTE gadget_key value_name value app_key 6 ATTR1 42 6 ATTR2 Hello World! 7 ATTR1 3.14 7 ATTR3 $ATTR1 8 ATTR1 4711 8 ATTR2 0 2 2 2 2 2 2 P. Laux/BESSY BESSY Datenbank Gadgets - Layer Parent1 Parent2 Child1 Umwandlung in einen Pfad erbringen enorme Möglichkeiten in der SucheIOC2 und Abfrage durch die Nutzung der PLSQL Packages zu den Gadgets Child2 SELECT * FROM TABLE(get_gadgets(‚/Parent%/[red]/%/%‘)); G-Child SELECT * FROM TABLE(get_roots(‚red‘)); SELECT * FROM TABLE(get_hierarchies(‚Parent1%‘)); PATHTYPE pa re nt_ke y child_ke y type _ke y 5 5 5 5 NULL 6 7 5 8 dista nce pa th KEYTYPE gadget_key G-Child KEYTYPE gadget_key Parent1 Parent2 type d_pa th 3 4 0 Parent1 1 Parent1/Child1 1 Parent1/Child2 Parent1 Parent1/[red]/Child1 Parent1/[blue]/Child2 3 2 Parent1/Child2/G-Child Parent1/[blue]/Child2/[red]/G-Child P. Laux/BESSY BESSY Datenbank Gadgets - Problem Grosses Problem bei den Bäumen/Pfaden sind Routen. Routen können zu mehrdeutigen IOC2 Antworten führen und müssen konsequent ausgeschlossen werden. Instance Part1 Part2 Typisierung ist das A und O! Temp1 Elem1.1 Elem1.2 Elem1.2.1 Überladen von Wertepaaren, Instanzierung ermöglichen sehr rationale Werteverwaltung. Elem1.3 Elem1.2.2 Extrem hohe Flexibilität, aber auch starke Abstraktheit. Erst nachdenken und beraten, ist besser als darauf los „basteln“. Struktur gleicht einem Wiki ähnlichem Ansatz. P. Laux/BESSY BESSY Datenbank Gadgets - Resumee IOC2 Aller Anfang war schwer, doch nach und nach zeigen sich die Stärken. Derzeitiger Stand zeigt bereits, daß mit diesem Ansatz eine vollkommen andere Art des Arbeitens, wie sie bereits bei der Softwareentwicklung erfolgt, möglich wird. Da es sowieso Absprachen erfordert, paßt der Ansatz sogar in die vorherrschende Arbeitsorganisation hervorragend. perl Bibliothek perl Import und Export Java Frontend (Soll in das CSS eingefügt werden) über der PHP Requester auch zukünftig Webabfragen möglich P. Laux/BESSY Parameter, Werte mit gewissen Etwas BESSY Datenbank Der Parameter device.variable[mode][timestamp] = value unit (notice) = 12.245 BPR.length [SB][2006-12-05] m device: benamstes Gerät nach Namenskonvention variable: Name einer Variablen, textuell mode: Betriebsmodus der Machine oder Art des Modells timestamp: kleine Möglichkeit der Versionierung value: Wert der Variablen des Gerätes unit: Einheit bestehend aus Präfix und Einheit notice: Bemerkungen, durch Format auch Beziehungen P. Laux/BESSY BESSY Datenbank Device-Parameters P. Laux/BESSY BESSY Datenbank Devices - Parameter Modulares Konzept führt zu Schnittstellen Name-Value-Pair kombiniert mit Timestamp und Modus ergeben eine Möglichkeit Versionsorientierung für die verschiedenen Modi des Speicherringbetriebes aufrecht zu halten Genauso wir bei den Gadgets ist ein Multi-Tier-Softwarehierarchie möglich und wünschenswert Migration gestaltet sich sehr einfach. Mit leichten Nacharbeiten sogar Geräteabhängigkeiten darstellbar. P. Laux/BESSY BESSY Datenbank IRMIS Basiert auch auf den Name-Value-Pair Prinzip Nicht deskriptiver Ansatz sondern operativer, Crawler Prinzip Hervorragende Ergänzung durch Gadgets und Device-Parameters Keep it simple Prinzip breiter Einsatz in mehreren Instituten weltweit P. Laux/BESSY Die Erlösung... Der Kaffee naht... BESSY Datenbank Generelles Betrieb der Maschine hat Vorrang Migrationen sind von der Akzeptanz und Motivation der Mitarbeiter abhängig Ein-Mann Datenbankadministration bedarf einer konfliktbefreienden Arbeitsweise Die Datenbankinhalte sollten sich immer nach den Wünschen der Anwender richten. Informationen aus erster Hand sind entscheidend für den Erfolg eines Einsatzes. P. Laux/BESSY BESSY Datenbank Aussichten Gadgets RDB IOC Parameter descriptiv IRMIS operativ P. Laux/BESSY BESSY Datenbank Vielen Dank! Autoren und Mitwirkende: T. Birke, B. Franksen, B. Kuner, R. Lange, R. Müller, G. Pfeiffer, J. Rahn von BESSY mbH Und michse P. Laux/BESSY DATENBANKEN ALS BACKEND FÜR DIE KONFIGURATION UND VERWALTUNG VON HARD- UND SOFTWARE