Upload
doanthuy
View
233
Download
1
Embed Size (px)
Citation preview
Der Advantage Data Architect
Der Advantage Data Architect (ARC) ist wohl das wichtigste Werkzeug für alle, die mit dem Advantage
Database Server arbeiten. Dieses Kapitel bietet einen Überblick der wichtigsten Funktionalitäten.
ÜberblickDie erste Begegnung mit dem Advantage Data Architect (ARC) haben
Sie bereits in Kapitel 2 (Advantage Datenbanken) gehabt. Der ARC ist komplett in Delphi geschrieben und wird mit Quellcode ausgeliefert. Allerdings ist dieser Quellcode nicht ohne weiteres kompilierbar. Als für Version 7 das ADS-Produktmanagement die Entscheidung traf, den Data Architect benutzerfreundlicher zu gestalten, ging man bewusst den Weg zu kommerziellen Drittanbieter-Komponenten, mit dem Nachteil, nicht mehr den kompletten Quellcode liefern zu können. Auch die Entscheidung, den ARC nur noch für Windows anzubieten und nicht mehr für Linux, verbesserte sowohl Design als auch Stabilität dieses Utilities.
Connection Repository
Zentraler Dreh- und Angelpunkt des Architekten ist seit Version 8 das Connection Repository (siehe Abbildung 31). Dieses enthält in einer Baumstruktur alle Aliase, welche in der gefundenen ads.ini unter der Sektion [databases] definiert sind. Idealerweise befindet sich diese ads.ini auf dem Entwicklungsrechner im Windows-Verzeichnis, damit sie für alle Programme gleichermaßen zur Verfügung steht. Die Alias-Definition selbst besteht nur aus einem einzigen Eintrag:
[databases]DEMODB=D:\ADS\adsdb\demoDB\DEMODB.ADD;DADTDemoData=C:\Program Files\Advantage 9.0\Help\ADS_DATA\; A
Hinter dem Namen des Alias folgt der Pfad zur Datenbank (ein Verzeichnis bei freien Tabellen, die ADD-Datei bei Dictionary-Datenbanken) und der Tabellen- bzw. Datenbanktyp.
A Advantage Tabellen (ADT, ADI, ADM)C FoxPro-Tabellen (DBF, CDX, FPT)N Clipper-Tabellen (DBF, NTX, DBT)V Visual FoxPro-Tabellen (erweiterte DBF, CDX, FPT)D Advantage Data Dictionary
Abbildung 31: Das Connection Repository
Der Data Architect benötigt neben der Alias-Definition noch weitere Angaben zur Verbindung, welche jeweils in einer eigenen Sektion abgelegt werden. Diese Informationen sind aber nur für ARC notwendig, sie sollten vor der Weitergabe der ads.ini möglichst entfernt werden.
[DEMODB_info]Username=adssysServerType=remoteCommunicationType=defaultBlankPassword=yesExpandedNodes=TABLES;PUBLICATIONS;SUBSCRIPTIONS;
Datenbanken, welche über den Architekten angelegt werden (New Connection Wizard bzw. Ctrl+D für eine neue Verbindung oder Ctrl+W für ein neues Data Dictionary) werden automatisch in das Connection Repository aufgenommen.
Über den Hotkey F11 (nicht F3 wie es fälschlicherweise im Kontextmenü angezeigt wird) kann das Connection Repository versteckt bzw. wieder angezeigt werden. Übrigens erscheint je nach Position des rechten Mausklicks ein anderes Kontextmenü. Wird im freien Bereich geklickt, so erhält man das Menü für das gesamte Repository (wie in Abbildung 28 zu sehen). Ein Rechtsklick auf ein Objekt liefert eine Objekt-spezifische Auswahl.
Table Editor
Der Table Editor dient primär zur Anzeige und Manipulation von Inhalten einer Tabelle. Ein Doppelklick auf eine Tabelle im Connection Repository öffnet diese im shared mode mit den Standard Einstellungen der Verbindung. Über das Kontextmenü Advanced Open (auch zu Erreichen über File | Open Table Ctrl+O) können zusätzliche Optionen für das Öffnen der Tabelle angegeben werden. Funktionen zur Tabellenmanipulation erreichen Sie über einen Rechtsklick in der Gitteranzeige des Editors.
An der unteren Fensterleiste (Abbildung 32) können Sie die Sicht auf die Daten verändern. Die Auswahl links zeigt vorhandene Indizes an. Zusätzlich zu den Indizes lassen sich noch NATURAL ORDER (nicht sortierte Ansicht) und ADS_DEFAULT (Sortierung nach in der Datenbank definiertem Default Index) auswählen. Rechts daneben folgen die Optionen Scope (Einschränkung der Ansicht auf einen Index-basierten Ausschnitt), Filter (Anlegen eines XBase-Filters) und Search (auf der aktuellen Sortierung basierte Positionierung). Scope und Search sind dabei auf ein einzelnes Feld beschränkt, eine Kombination aus mehreren Feldern kann mit dem Architekten nicht verwendet werden.
Abbildung 32: Toolbar des Table Editors
Beim Anlegen eines Filters erscheint neben dem Button ein farbiger Kreis, welcher die Optimierungsstufe des Filters anzeigt. Rot bedeutet nicht optimierter Advantage Optimized Filter (AOF, siehe dazu auch Kapitel 5), gelb ist teil-optimiert und bei grün ist der Filter voll optimiert. Ein Doppelklick auf das Eingabefeld öffnet übrigens einen Eingabedialog, welcher auch einen mehrzeiligen Filter zulässt (siehe Abbildung 33).
Abbildung 33: Der Filter Dialog
SQL UtilityNeben dem Öffnen und Modifizieren der Tabelle über die ISAM-Schnitt
stelle bietet der Data Architect dasselbe auch über SQL an. Das SQL Utility (Abbildung 34) kann über das Menü (Tools | SQL Utility Ctrl+Q) oder über den SQL-Button in der Toolbar aufgerufen werden und verbindet sich nach dem Öffnen mit der gerade aktiven Connection. Leider bietet der SQL Editor (noch) keine Codevervollständigung und auch das Syntax Highlighting ist sehr rudimentär und parst nur nach Schlüsselwörtern, ohne die Syntax des eingegebenen SQL-Statements auszuwerten. Trotzdem hilft dieses Utility ungemein hilfreich, SQL-Statements zu entwickeln und zu testen.
Im SQL Utility können mehrere Editoren gleichzeitig geöffnet werden, welche alle auf derselben Verbindung zur Datenbank beruhen. Das SQL Utility bietet herkömmliche Textverarbeitungsfunktionen, welche entweder über das Menü, die Toolbar, das Kontextmenü oder Hotkeys aufgerufen werden können. Der Editor ist konfigurierbar (Kontextmenü | Options...) und bietet neben Autokorrektur auch Code Templates.
Über F7 wird die Syntax des SQL-Statements geprüft, F5 führt es aus und zeigt das Ergebnis an. Ist dabei ein Bereich im SQL-Statement ausgewählt, so wird nur dieser Teil geprüft bzw. ausgeführt.
Enthält das eingegebene Statement unbekannte Parameter, so fordert Sie der Data Architect zur Eingabe derer auf.
Abbildung 34: Das SQL Utility
Mit Show Plan holt sich der Data Architect den Ausführungsplan (Execution Plan) und zeigt diesen grafisch an. Das ist vor allem dann hilfreich, wenn es gilt, komplexere SQL-Statements zu optimieren. Weitere Informationen zum Ausführungsplan finden Sie in Kapitel 6 (Optimieren von SQL-Statements).
Seit Version 9 besteht die Möglichkeit, SQL-Skripte zu debuggen. Der Debugger ist in das SQL Utility integriert und wird durch Ctrl+F5 gestartet. Wie der Debugger verwendet wird, ist in Kapitel 6 (Debuggen von SQL-Skripten) beschrieben.
Alle Menüs, Toolbars und Teil-Fenster innerhalb des SQL Utilities können entweder frei schwebend sein oder an beliebiger Stelle des Utilities angedockt werden.
Query BuilderMit Tools | Query Builder öffnet man auf der aktiven Verbindung ein
Utility (siehe Abbildung 35), um einfache SQL Queries grafisch erstellen und dann testen zu können.
Abbildung 35: Der Query Builder
Auf der rechten Seite befindet sich eine Liste mit Tabellen und Views der Datenbank, welche mit der Maus in die Arbeitsfläche gezogen werden können. Um Beziehungen zwischen den Tabellen herzustellen, ziehen Sie das (Primär-) Feld der Master- auf das entsprechende Feld der Detail-Tabelle. Über das Kontextmenü der Verbindung (rechte Maustaste auf die Verbindungslinie) lassen sich deren Optionen einstellen. Durch Anklicken des SQL-Buttons (Ctrl+G) wird das SQL-Statement erzeugt und mit der Pfeil-Taste (Ctrl+E) ausgeführt. Das erzeugte Modell kann abgespeichert und wieder geladen werden.
SQL WizardEine andere Möglichkeit, vom Data Architect SQL-Statements erzeu
gen zu lassen, ist der SQL Wizard. Jedes Objekt und jede Objektgruppe einer Dictionary-Verbindung des Connection Repositories enthält im Kontextmenü einen Eintrag Generate SQL Script. Wird dieser Menüpunkt aufgerufen, so erstellt ARC für diesen und alle untergeordneten Knoten ein SQL-Skript, mit welchem die Objekte erstellt werden können, und öffnet dieses im SQL Utility. Somit enthält man eine einfache Möglichkeit, Objekte in eine andere Datenbank zu kopieren: Markieren Sie dazu das gewünschte Teil-Skript, kopieren es in die Zwischenablage und fügen es in ein mit der anderen Datenbank verbundenen SQL Utility wieder ein.
Free ADT
Über den Menüpunkt Tools | Free Data Dictionary Bound Table wird eine grafische Schnittstelle für das externe Utility freeadt.exe aufgerufen. Mit diesem Utility können an ein Data Dictionary gebundene ADT-Tabellen aus diesem entfernt werden. Dabei wird der Header der ADT-Datei wieder so verändert, dass diese über eine Pfad-Verbindung (ohne ADD) wieder verwendet werden kann. Verschlüsselte Tabellen werden dabei nicht automatisch entschlüsselt, um hier kein Sicherheitsloch zu generieren.
Data Import Wizard
Der Data Import Wizard (Tools | Import Data) bietet eine komfortable Möglichkeit, Datenbanken aus diversen Quellen in den ADS zu importieren. Derzeit unterstützte Quellen beinhalten ADO (über den jeweiligen OLE DB Provider), Paradox/dBASE, BDE Alias (die Borland Database Engine), PervasiveSQL (Btrieve), verschiedene Textformate sowie Advantage kompatible Datenbanken. Im ersten Schritt des Assistenten (siehe Abbildung 36) werden der Quellentyp und die Verbindungsdaten ausgewählt.
93
Abbildung 36: Der Data Import Wizard
Zudem kann festgelegt werden, ob Textfelder als Case Insensitive (Ignorieren der Groß-/Kleinschreibung für Sortierung und Vergleiche) importiert werden.
Danach möchte der Assistent den Alias der Advantage Ziel-Datenbank. Hier können Sie entweder bereits im Connection Repository gelistete Einträge auswählen oder auch einen neuen erzeugen. Der Import Wizard erstellt nun in der Zieldatenbank die Tabellen im ADT-Format, kopiert Datensatz für Datensatz von der Quelle und legt im Anschluss Indizes an, welche denen in der Quelltabelle entsprechen. Besitzt die Quelltabelle einen Primärschlüssel ohne dedizierten Namen, so erstellt der Architekt diesen unter dem Namen PRIMARY.
Table ExportDer Advantage Data Architect kennt zwei Methoden, um Tabellen zu
exportieren. Die erste davon findet sich unter dem Menüpunkt Tools | Export Table Structures as Code. Dies öffnet ein Table Export Utility zum Exportieren der Tabellenstruktur nach Delphi-, C++Builder- oder SQL-Code (siehe Abbildung 37). Der erzeugte Code kann dann in die Applikation übernommen werden.
Abbildung 37: Export der Tabellenstruktur
Die andere Möglichkeit ist über die Kontextmenüs der Gitteranzeige im Table Editor und im SQL Utility zu erreichen und exportiert das Resultat in diverse andere Formate. Der Export kann in eine existierende Tabelle, in eine neue Tabelle oder in allgemein übliche Formate wie Microsoft Word, Microsoft Excel, verschiedene Textformate, die Zwischenablage oder HTML erfolgen.
95
Remote Management UtilityDas Remote Management Utility (Tools | Remote Server Info Ctrl+R)
dient zum Überwachen eines entfernten ADS-Servers. Beim Start verbindet es sich mit der gerade aktiven Datenbank, es lässt sich jedoch auch ein beliebiger Pfad eintragen. Dies macht das Remote Management Utility zum wichtigsten Werkzeug bei Verbindungsproblemen: Es kann dazu benutzt werden, verschiedene Pfade zur Datenbank zu testen, angefangen von der direkten Angabe der IP Adresse und des Ports (\\192.168.1.100: 6262) über UNC-Pfade (\\meinserver\meinedaten) bis hin zu verbundenen Laufwerken (S:\).
Das Utility bietet auf mehreren Seiten Einblicke in den Server und die Server-Konfiguration (siehe Abbildung 38), ähnlich dem Advantage Configuration Utility. Allerdings lassen sich damit die Konfigurationswerte nicht ändern.
Abbildung 38: Das Remote Management Utility
Auf der Seite Connected Users werden alle Verbindungen zum ADS inklusive deren geöffnete Tabellen und gehaltene Datensperren angezeigt. Die Benutzer (identifizierbar über Computername, Loginname, Datenbank Loginname, IP-Adresse, Terminal Client Adresse und Applikationskennung) können über ein Kontextmenü (Klick mit der rechten Maustaste auf den entsprechenden Benutzer in der Liste) getrennt werden.
In Open Files werden alle geöffneten Dateien, zusammen mit den entsprechenden Benutzern, angezeigt. Active Queries bietet die Möglichkeit, am Server aktive SQL-Abfragen anzuzeigen und abzubrechen (dazu ist ein administrativer Benutzer nötig). Die Seite Communication Statistics zeigt eine Statistik des Advantage Servers auf Kommunikationsebene. Diese Statistiken können Aufschluss über Netzwerkprobleme geben.
97
Environment Check UtilityEine gute Möglichkeit, Verbindungsprobleme zu diagnostizieren, bietet
das Environment Check Utility (Tools | Environment Check Utility, siehe Abbildung 39).
Abbildung 39: Das Environment Check Utility
Dieses schreibt zwei Diagnose-Dateien: die erste (env_log.txt) enthält die für den ADS wichtigen Konfigurationseinstellungen des Computers, wie Betriebssystem, verbundene Laufwerke, Versionen der Advantage DLLs und Netzwerkeinstellungen, und wird im Fenster des Utilities ausgegeben.
Die zweite Log-Datei heißt adscom.txt und enthält ein genaues Protokoll des Verbindungsaufbaus bzw. -Versuchs. Aus diesem Protokoll kann ausgelesen werden, ob die Namensauflösung funktioniert, welches Protokoll zur Kommunikation ausgewählt wurde und ob eine Verbindung überhaupt stattfand oder nicht. Beide Dateien sind im Verzeichnis des Data Architect zu finden.
Dictionary DifferentiatorWenn mehrere Versionen derselben Applikation ausgeliefert sind, wird
es zunehmend schwerer, die Struktur der Datenbank im Einklang mit der Applikation zu halten. Eine verbreitete Strategie ist, alle Tabellen, Felder und Indizes bei Applikationsstart zu überprüfen und entsprechende Strukturveränderungen vorzunehmen. Dies ist jedoch sehr zeitaufwändig.
Der Advantage Data Architect enthält ein Utility namens Dictionary Differentiator (Tools | Compare Data Dictionaries Ctrl+L). Damit können zwei (Dictionary basierte) Datenbanken miteinander verglichen und Differenz-Skripte erzeugt werden, welche die eine Datenbankstruktur in die andere überführt. Das SQL-Skript kann auf einzelne Objekte, ganze Objektgruppen oder die gesamte Datenbank in beide Richtungen erstellt werden.
Abbildung 40: Der Dictionary Differentiator
Beim Start des Dictionary Differentiators fordert dieser zur Eingabe zweier Datenbanken ein. Diese können entweder aus dem Connection Repository stammen oder per Pfad frei eingegeben werden (siehe Abbildung 40). Danach werden diese Datenbanken unter dem Benutzerkonto ADSSYS verbunden (eine Eingabe des Passwortes ist erforderlich) und verglichen.
99
Das Ergebnis ist eine Baumansicht der Unterschiede (siehe Abbildung 41). Nun können Sie einen Knoten auswählen und über den Button Write Script das Differenz-Skript schreiben lassen.
Abbildung 41: Unterschiede zweier Datenbanken
Eine gute Strategie, die Datenbankstruktur mit der Applikation synchron zu halten, ist das Verwenden der Datenbankeigenschaften Version_Major und Version_Minor. Pflegen Sie diese mit jeder Version Ihrer ausgelieferten Datenbankstrukturen, so können Sie jeden Versionssprung in inkrementellen Differenz-Skripten der Applikation mitgeben. Bei Programmstart prüft die Applikation nur die gespeicherte Version der Datenbank und führt bei Bedarf Skript für Skript aus, bis die Datenbank-Version mit der benötigten übereinstimmt.
Hinweis: Sie sollten die Skripte einzeln prüfen, da der Dictionary Differentiator nicht in jedem Fall die korrekten SQL-Statements erzeugt.
Auto UpdaterNeu in Version 9 des Data Architect ist ein automatisches Update.
Findet der Architect eine neue Version auf dem Download-Server, so bietet er an, diesen zu laden und zu installieren. Dabei werden nicht nur die vorhandenen Dateien einfach ersetzt, sondern das gesamte Setup erneut durchlaufen. Die Überprüfung auf neue Updates erfolgt beim Beenden des ARC, um den Arbeitsfluss nicht zu unterbrechen.
Abbildung 42: Der Auto Updater
Sind automatische Updates nicht erwünscht, so können Sie dies in der Data Architect Konfiguration abschalten. Über den Menüpunkt Help | Check for Updates wird manuell auf neue Updates geprüft.
Data Architect Konfiguration
Das Verhalten und Aussehen des Advantage Data Architect kann über die Konfiguration (Tools | ARC Settings) angepasst werden. Auf der Seite General befindet sich allgemeines Verhalten für Tabellen, Queries und die Browser-Ansicht. Einstellungen auf der Seite User Interface beeinflussen das Layout. Hier können Sie auch eine maximale Spaltenbreite für die Browser einstellen. Über die Seite Query lässt sich festlegen, ob das SQL Utility mit zuvor gespeicherten SQL-Skripten oder leer starten soll und auf Connections schließlich finden sich die Einstellungen für das Verhalten des Connection Repositories.