Das Advantage Database Server 9

Werbung
Advantage Data Architect
ARC32
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.
Überblick
Die 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. Aller­
dings 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 Entschei­
dung, 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 Sek­
tion [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;D
ADTDemoData=C:\Program Files\Advantage 9.0\Help\ADS_DATA\; A
Hinter dem Namen des Alias folgt der Pfad zur Datenbank (ein Ver­
zeichnis 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 An­
gaben 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=adssys
ServerType=remote
CommunicationType=default
BlankPassword=yes
ExpandedNodes=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 Kontext­
menü 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 Errei­
chen über File | Open Table Ctrl+O) können zusätzliche Optionen für das
Öffnen der Tabelle angegeben werden. Funktionen zur Tabellenmanipula­
tion 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 Utility
Neben 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 verbin­
det 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ör­
tern, 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 SQLSkripten) 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 Builder
Mit 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 DetailTabelle. Ü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 Wizard
Eine 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 auto­
matisch 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 impor­
tieren. 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 Export
Der 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 SQLCode (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 Utility
Das Remote Management Utility (Tools | Remote Server Info Ctrl+R)
dient zum Überwachen eines entfernten ADS-Servers. Beim Start verbin­
det 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 be­
nutzt 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 Con­
figuration 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 ange­
zeigt. Die Benutzer (identifizierbar über Computername, Loginname,
Datenbank Loginname, IP-Adresse, Terminal Client Adresse und Applika­
tionskennung) 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 ent­
sprechenden 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 Utility
Eine 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 ausge­
geben.
Die zweite Log-Datei heißt adscom.txt und enthält ein genaues Proto­
koll des Verbindungsaufbaus bzw. -Versuchs. Aus diesem Protokoll kann
ausgelesen werden, ob die Namensauflösung funktioniert, welches Proto­
koll zur Kommunikation ausgewählt wurde und ob eine Verbindung
überhaupt stattfand oder nicht. Beide Dateien sind im Verzeichnis des
Data Architect zu finden.
Dictionary Differentiator
Wenn 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 Abbil­
dung 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 Versions­
sprung 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 DatenbankVersion 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 Updater
Neu 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.
Herunterladen