Blackfish SQL-Anwendungen optimieren

Aus RAD Studio (Deutsch)
Wechseln zu: Navigation, Suche

Nach oben zu Blackfish SQL - Hilfeinhalt

In diesem Abschnitt werden Möglichkeiten beschrieben, um das Verhalten, die Zuverlässigkeit und die Größe von Blackfish SQL-Anwendungen zu optimieren. Sofern nicht anderweitig vermerkt, bezieht sich DataStoreConnection auf ein Objekt des Typs DataStoreConnection oder DataStore, das zum Öffnen einer Verbindung zu einer Blackfish SQL-Datenbankdatei verwendet wird.

Inhaltsverzeichnis

Datenbanken schnell laden

Im Folgenden finden Sie einige Tipps, wie Sie die Leistungsfähigkeit von Anwendungen beim Laden von Datenbanken verbessern können:

  • Verwenden Sie so oft wie möglich Prepared-Anweisungen oder Befehle. Wenn sich die Anzahl der Parameter von einer Einfügung zur nächsten ändert, löschen Sie die Parameter, bevor Sie die neuen Parameter festlegen.
  • Erstellen Sie die Tabelle ohne Primärschlüssel, Fremdschlüssel oder sekundäre Indizes. Laden Sie die Tabelle und erstellen Sie anschließend alle erforderlichen Primärschlüssel, Fremdschlüssel oder sekundäre Indizes.

Optimierung von Ladevorgängen für Java-spezifische Datenbanken

Verwenden Sie die DataExpress-Klasse TextDataFile zum Importieren von Textdateien. Sie verfügt über einen schnellen Parser und kann Daten schnell laden. Sie müssen den TableDataSet-Store auf eine DataStoreConnection setzen und die Eigenschaft StoreName auf den Namen Ihrer Tabelle in der Blackfish SQL-Datenbank. Wenn Sie eine neue Datenbank laden:

  1. Erstellen Sie zuerst die Datenbank als nichttransaktional.
  2. Laden Sie die nicht transaktionale Datenbank mithilfe der DataExpress-Komponenten StorageDataSet.addRow oder TextDataFile.
  3. Wenn der Ladevorgang abgeschlossen ist, machen Sie die Datenbank mithilfe der Eigenschaft DataStore.TxManager transaktional.

Dadurch wird die Datenbank zwei- bis dreimal schneller.

Allgemeine Empfehlungen

Dieser Abschnitt führt einige allgemeine Richtlinien zur Verbesserung der Leistung von Blackfish SQL-Anwendungen auf.

Datenbanken ordnungsgemäß schließen

Wenn eine Datenbank nicht ordnungsgemäß geschlossen wurde, verursacht sie beim nächsten Öffnen durch einen Prozess eine Verzögerung. Der Grund dafür ist, dass Blackfish SQL etwa 8-10 Sekunden benötigt, um sicherzustellen, das kein anderer Prozess die Datenbank geöffnet hat. Um zu gewährleisten, dass eine Datenbank ordnungsgemäß geschlossen wird, stellen Sie sicher, dass alle Verbindungen geschlossen sind, wenn sie nicht mehr benötigt werden. Falls es schwierig ist sicherzustellen, dass alle Verbindungen geschlossen sind, kann eine Verbindung mit Administratorrechten die integrierte gespeicherte Prozedur DB_ADMIN.CLOSE_OTHER_CONNECTIONS aufrufen, um sicherzustellen, dass alle anderen Verbindungen geschlossen werden.

Das Schließen der Verbindungen bietet darüber hinaus den Vorteil, dass danach der für den Blackfish SQL-Cache reservierte Speicher freigegeben wird.

Derzeit kann auf nichttransaktionale Datenbanken nur dann per SQL zugegriffen werden, wenn die Nur-Lese-Eigenschaft der Datenbank den Wert "true" hat. DataExpress-Java Beans können jedoch Schreiboperationen in einer nichttransaktionalen Datenbank durchführen.

Das Schließen einer nichttransaktionalen Blackfish SQL-Datenbank stellt sicher, dass alle Änderungen auf die Festplatte gespeichert werden. Für alle geöffneten Instanzen von DataStoreConnection wird ein Daemon-Thread ausgeführt, der geänderte Cache-Daten fortwährend auf der Festplatte speichert. (Standardmäßig werden geänderte Daten alle 500 Millisekunden gespeichert.) Wenn Sie die Java VM direkt beenden, ohne die Datenbank zu schließen, kann der Daemon-Thread unter Umständen den letzten Satz geänderter Daten nicht mehr speichern. Es besteht eine geringe Wahrscheinlichkeit, dass dabei eine nicht transaktionale Blackfish SQL beschädigt wird.

Eine transaktionale Blackfish SQL-Datenbank verliert garantiert keine Daten, allerdings macht der Transaktions-Manager unbestätigte Änderungen rückgängig.

Java-spezifische Datenbank schließen

Wenn in Ihrer Anwendung DataExpress-JavaBean-Komponenten verwendet werden, schließen Sie alle StorageDataSets, deren store-Eigenschaft auf DataStoreConnection gesetzt ist, wenn Sie sie nicht mehr benötigen. Damit werden Blackfish SQL-Ressourcen freigemacht, die mit dem StorageDataSet verknüpft sind, und die Möglichkeit geschaffen, eine Speicherbereinigung des StorageDataSet durchzuführen.

Sie können die Methode DataStore.shutdown() verwenden, um sicherzustellen, dass alle Datenbankverbindungen beendet werden, bevor eine Anwendung geschlossen wird.

Den Festplatten-Cache für Blackfish SQL optimieren

Die vorgegebene Maximalgröße des Cache-Speichers für Blackfish SQL-Datenbanken beträgt 512 Cache-Blöcke. Die vorgegebene Blockgröße ist 4.096 Byte. Daher erreicht der Cache-Speicher seine maximale Kapazität bei etwa 512 x 4.096 Byte (2 MB). Dieser Speicher wird nach Bedarf zugewiesen. In seltenen Fällen kann es vorkommen, dass alle Blöcke verwendet werden und der Cache-Speicher auf über 512 Cache-Blöcke anwächst. Sie können die minimale Cache-Größe mithilfe der Eigenschaft DataStore.MinCacheSize festlegen.

HINWEIS: Ändern Sie die Cache-Größe für JDataStore-Datenbanken nicht willkürlich. Stellen Sie zuvor sicher, dass dadurch die Leistungsfähigkeit Ihrer Anwendung verbessert wird.

Denken Sie beim Ändern der Cache-Größe für Blackfish SQL an Folgendes:

  • Die Cache-Größe ist bei modernen Betriebssystemen üblicherweise auf hohe Leistungsfähigkeit ausgelegt. In vielen Fällen wird durch das Vergrößern des Cache-Speichers für Blackfish SQL keine merkliche Leistungssteigerung erreicht und nur zusätzlicher Speicher belegt.
  • Es gibt nur einen Blackfish SQL-Festplatten-Cache für alle bei einem Prozess geöffneten Blackfish SQL-Datenbanken. Wenn alle Blackfish SQL-Datenbanken geschlossen werden, wird der Speicher für diesen globalen Festplatten-Cache freigegeben.
  • Setzen Sie für Handheld-Geräte mit wenig Speicher die Eigenschaft DataStore.MinCacheSize auf einen niedrigeren Wert, beispielsweise "96".

Dateizugriff optimieren

Blackfish SQL-Datenbanken führen die meisten Lese-/Schreibvorgänge für die folgenden vier Dateitypen aus:

  • Die eigentliche Blackfish SQL-Datenbankdatei (mit der Dateierweiterung .jds), die von der Eigenschaft DataStore.FileName festgelegt wird.
  • Transaktionale Blackfish SQL-Protokolldateien (Dateinamenerweiterung ist LOGAnnnnnnnnnn, wobei n eine Ziffer ist), wie in der TxManager.ALogDir-Eigenschaft angegeben
  • Temporäre Dateien für umfangreiche Sortiervorgänge, die durch die Eigenschaft DataStore.TempDirName festgelegt sind.
  • Temporäre .jds-Dateien für SQL-Abfrageergebnisse, die durch die Eigenschaft DataStore.TempDirName festgelegt sind.

Die Leistungsfähigkeit kann möglicherweise erhöht werden, wenn Sie Blackfish SQL anweisen, die genannten Dateien auf unterschiedlichen Laufwerken zu plazieren.

Dateispeicherung

Nachfolgend finden Sie einige Richtlinien zur Dateispeicherung, die die Leistung Ihrer Anwendungen erhöhen können:

  • Insbesondere ist es wichtig, die Protokolldateien auf einem getrennten Festplattenlaufwerk zu speichern. Protokolldateien werden in der Regel in sequentieller Reihenfolge angehängt und ihr Inhalt wird auf Platte gespeichert, damit Bestätigungsvorgänge (commits) abgeschlossen werden können. Daher ist es vorteilhaft, wenn ein Festplattenlaufwerk zur Verfügung steht, auf dem Schreibvorgänge schnell durchgeführt werden können.
  • Auf Win32-Plattformen kann die Leistung erhöht werden, indem die Blackfish SQL-Protokolldateien in einem separaten Verzeichnis gespeichert werden. Das Speichern zahlreicher Dateien im Protokolldateiverzeichnis, bei denen es sich nicht um Protokolldateien handelt, kann die Leistung von Commit-Operationen verlangsamen. Dies verbessert eventuell auch auf anderen Plattformen als Windows NT/2000/XP die Performance.
  • Vergessen Sie nicht, Ihre Festplattenlaufwerke regelmäßig zu defragmentieren. Dies ist insbesondere bei dem Festplattenlaufwerk von Bedeutung, auf dem die Protokolldateien gespeichert sind, weil Blackfish SQL viele sequentielle Lese-/Schreibvorgänge an diesen Dateien durchführt.
  • Bei Win32-Plattformen sollten Sie die Verwendung eines FAT32-Dateisystems mit einem großen Cluster, z. B. 64 KB für das Laufwerk, in das Ihre Protokolldateien geschrieben werden, in Betracht ziehen.

Plattencache-Schreiboptionen bei nicht transaktionalen Datenbanken

Hinweis: Dieser Abschnitt gilt nur für Blackfish SQL für Java, das die DataExpress-JavaBean-Komponenten verwendet.

Mit der saveMode-Eigenschaft der DataStore-Komponente können Sie überwachen, mit welcher Häufigkeit Cache-Blöcke auf die Festplatte geschrieben werden. Diese Eigenschaft ist nur für nicht transaktionale Blackfish SQL-Datenbanken relevant. Hier die gültigen Werte für diese Methode:



0

Bei diesem Wert überlassen Sie dem Daemon-Thread die Überwachung der Cache-Schreibvorgänge. Bei dieser Einstellung ist die Verarbeitungsgeschwindigkeit am höchsten, gleichzeitig aber auch die Gefahr der Datenbeschädigung.

1

Mit diesem Wert werden die Blöcke sofort beim Hinzufügen oder Löschen gespeichert; der Daemon-Thread übernimmt die Verwaltung aller anderen Änderungen. Dies ist der Standardmodus. Die Verarbeitungsgeschwindigkeit ist annähernd so gut wie im Modus saveMode(0).

2

Speichert alle Änderungen sofort: Verwenden Sie diese Einstellung immer, wenn Sie eine Anwendung debuggen, die eine DataStore-Komponente verwendet.



Im Gegensatz zu anderen Eigenschaften von DataStore kann saveMode auch bei geöffneter Verbindung geändert werden. Wenn Sie beispielsweise eine DataStoreConnection verwenden, können Sie über die dataStore-Eigenschaft auf den Wert zugreifen:


DataStoreConnection store = new DataStoreConnection();
...
store.getDataStore().setSaveMode(2);

Beachten Sie, dass sich dadurch das Verhalten aller Objekte des Typs DataStoreConnection ändert, die auf die betreffende Blackfish SQL-Datenbankdatei zugreifen.

Speicher optimieren

Sie können den Speicherbedarf auf verschiedene Arten optimieren. Bedenken Sie jedoch, dass das Reservieren von zu viel Speicher ebenso von Nachteil sein kann wie umgekehrt das Reservieren von zu wenig Speicher.

  • Sie können auch versuchen, den Wert der Eigenschaft ConnectionProperties.MinCacheBlocks zu erhöhen. Dieser Wert steuert die Mindestanzahl der zwischengespeicherten Blöcke.
  • Die Eigenschaft ConnectionProperties.MaxSortBuffer steuert die maximale Größe des Puffers, der für Sortierungen im Arbeitsspeicher verwendet wird. Sortierungen, die diese Puffergröße überschreiten, verwenden dann eine langsamere platten-basierte Sortierung.

Java-spezifisches Speicher-Tuning

Normalerweise wehrt sich der Java-Heap gegen ein Anwachsen über die anfängliche Größe hinaus, indem er immer häufiger Speicherbereinigungen erzwingt, mit der Folge, dass der für den Heap verfügbare Platz immer knapper wird. Mit der JVM-Option -Xms können Sie einen größeren anfänglichen Heap-Umfang definieren. Es ist oft von Vorteil, für die JVM-Einstellungen -Xms und -Xmx dieselben Werte zu wählen.

Verschiedene Tipps zur Performance-Steigerung

Nachfolgend einige Tipps, wie Sie die Leistung verbessern können:

  • Es ist oft hilfreich, die Eigenschaft ConnectionProperties.TempDirName, die von der Abfrage-Engine verwendet wird, auf ein Verzeichnis einer anderen (schnelleren) Festplatte zu setzen.
  • Ändern Sie die Prüfpunktfrequenz für den Transaktions-Manager. Ein höherer Wert kann zu einer besseren Performance führen, sich gleichzeitig aber auch negativ auf das Crash Recovery auswirken. Diese Einstellung kann mithilfe der integrierten gespeicherten Prozedur DB_ADMIN.ALTER_DATABASE per SQL aktualisiert werden. In Blackfish SQL für Java können Sie den JdsExplorer verwenden, um diese Eigenschaft zu setzen, indem Sie TxManager > Ändern auswählen.

Transaktionale Anwendungen optimieren

Die erhöhte Zuverlässigkeit und Flexibilität, die aus der Verwendung transaktionaler Blackfish SQL-Datenbanken erwachsen, geht teilweise zu Lasten der Verarbeitungsgeschwindigkeit. Sie können dies auf unterschiedliche Weise verhindern, wie in den folgenden Abschnitten beschrieben.

Nur-Lese-Transaktionen verwenden

Bei Transaktionen, die nur lesen und niemals schreiben, lässt sich durch Nur-Lese-Transaktionen eine erhebliche Steigerung der Verarbeitungsgeschwindigkeit erzielen. Die Verbindungseigenschaft readOnly kontrolliert, ob es eine Nur-Lese-Transaktion ist. Die DataStoreConnection-JavaBean von Blackfish SQL für Java hat eine readOnlyTx-Eigenschaft zum Aktivieren von Nur-Lese-Transaktionen.

Bei Nur-Lese-Transaktionen wird eine "Momentaufnahme" der Blackfish SQL-Datenbank simuliert. Diese Momentaufnahme sieht nur Daten von Transaktionen, die beim Starten der Nur-Lese-Transaktion bestätigt wurden. Die Momentaufnahme wird beim Öffnen der DataStoreConnection erstellt und bei jedem Aufruf einer commit-Methode aktualisiert.

Nur-Lese-Transaktionen bieten darüber hinaus den Vorteil, dass sie durch andere Schreib- und Lesevorgänge nicht blockiert werden können. Sowohl zum Lesen als auch zum Schreiben ist normalerweise eine Sperre erforderlich. Da jedoch für eine Nur-Lese-Transaktion eine Momentaufnahme verwendet wird, sind keine Sperren erforderlich.

Sie können die Anwendung weiter optimieren, indem Sie einen Wert für die Eigenschaft readOnlyTxDelay definieren. Mit der readOnlyTxDelay-Eigenschaft wird die maximale Lebensdauer einer Momentaufnahme (in Millisekunden) festgelegt, die von der Verbindung genutzt werden kann. Hat diese Eigenschaft nicht den Wert Null, werden bereits vorhandene Momentaufnahmen in absteigender Aktualität (von der neuesten zur ältesten) durchsucht. Wenn eine Momentaufnahme existiert, deren Lebensdauer den Wert readOnlyTxDelay noch nicht überschritten hat, wird diese Momentaufnahme verwendet und eine neue erfasst. Standardmäßig ist diese Eigenschaft auf 5000 Millisekunden gesetzt.

Soft-Commit-Modus

Wenn Sie den Soft-Commit-Modus über die SoftCommit-Eigenschaft aktivieren, erstellt die Transaktionsverwaltung weiterhin Protokolldatensätze für bestätigte Transaktionen, verwendet aber keinen synchronen Schreibmechanismus für Bestätigungsoperationen. Wenn der Soft-Commit-Modus aktiviert ist, können durch bestätigte Transaktionen geänderte Dateien (file writes) vom Cache-Speicher des Betriebssystems zwischengespeichert werden. In der Regel schreibt das Betriebssystem "Dirty"-Cache-Blöcke innerhalb von Sekunden auf Platte. Der Soft-Commit-Modus führt zu einer Leistungssteigerung, kann aber nicht gewährleisten, dass die zuletzt bestätigten Transaktionen auch wirklich dauerhaft sind. Sie können die SoftCommit-Eigenschaft setzen, indem Sie die integrierte gespeicherte Prozedur DB_ADMIN.ALTER_DATABASE aufrufen.

Statusprotokollierung für Transaktionsprotokolldateien deaktivieren

Sie können die Verarbeitungsgeschwindigkeit dadurch erhöhen, dass Sie die Protokollierung der ausgegebenen Statusmeldungen deaktivieren. Setzen Sie dazu die recordStatus-Eigenschaft auf false. Sie können die RecordStatus-Eigenschaft setzen, indem Sie die integrierte gespeicherte Prozedur DB_ADMIN.ALTER_DATABASE aufrufen.

Die Leistungsfähigkeit der Concurrency-Steuerung von Blackfish SQL verbessern

Mithilfe der folgenden Richtlinien können Sie die Leistungsfähigkeit der Concurrency-Steuerungsvorgänge von Blackfish SQL optimieren:

  • Wählen Sie die niedrigste Isolationsebene, auf der Ihre Anwendung fehlerfrei funktionieren kann. Bei Verwendung niedrigerer Isolationsebenen treten in der Regel weniger und schwächere Sperrungen auf.
  • Fassen Sie mehrere Anweisungen in einer einzelnen Transaktion zusammen. Bei Verbindungen wird nach jeder Ausführung einer Anweisung standardmäßig das "Commit" des Autocommit-Modus ausgeführt.
  • Bestätigen ("Commit") Sie Transaktionen so schnell wie möglich. Die meisten Sperrungen werden erst aufgehoben, wenn eine Transaktion bestätigt oder rückgängig gemacht wird.
  • Verwenden Sie Anweisungs- oder Befehlsobjekte möglichst oft, oder verwenden Sie besser Prepared-Anweisungen oder -Befehle.
  • Schließen Sie alle Anweisungen oder Befehle, alle Ergebnismengen bzw. Leser und alle Verbindungsobjekte, wenn sie nicht länger benötigt werden. Unidirektionale ResultSet- oder Leserobjekte werden nach dem Lesen der letzten Zeile automatisch geschlossen.
  • Verwenden Sie Nur-Lese-Transaktionen für Berichte mit langer Ausführungsdauer oder Online-Sicherungsvorgänge. Verwenden Sie die DB_ADMIN.COPYDATABASE-Methode für Online-Backups. Nur-Lese-Transaktionen ermöglichen eine konsistente (serialisierbare), schreibgeschützte Ansicht der Tabellen, auf die sie zugreifen. Sie fordern keine Sperrungen an, weshalb keine Sperr-Zeitüberschreitungen und Deadlocks auftreten können. Weitere Informationen hierzu finden Sie im Abschnitt Nur-Lese-Transaktionen verwenden.
  • Die Verwaltung einer schreibgeschützten Ansicht erzeugt eine gewisse Menge an Overhead. Daher können mehrere Transaktionen dieselbe schreibgeschützte Ansicht gemeinsam nutzen. Die Eigenschaft ConnectionProperties.ReadOnlyTxDelay gibt an, wie alt die schreibgeschützte Ansicht sein darf, wenn eine Nur-Lese-Transaktion gestartet wird. Bestätigen Sie die Transaktion einer Nur-Lese-Verbindung, um deren Ansicht der Datenbank zu aktualisieren. Nur-Lese-Transaktionen verwenden die transaktionalen Protokolldateien zum Verwalten ihrer Ansichten. Daher sollten Nur-Lese-Verbindungen geschlossen werden, sobald sie nicht mehr benötigt werden.

Vorgänge mit mehreren Threads verwenden

Der Durchsatz von Schreibtransaktionen kann erhöht werden, wenn mehr Threads zur Durchführung von Vorgängen verwendet werden, weil alle Threads durch die von Blackfish SQL bereitgestellte “group commit”-Unterstützung den Overhead von Bestätigungsvorgängen gemeinsam nutzen können.

Zum Einsatz bereitgestellte Ressourcen für Blackfish SQL für Java-Anwendungen ausdünnen

Beim Deployment einer Blackfish SQL-Anwendung können Sie bestimmte, nicht benötigte Klassen und Grafikdateien ausschließen.

  • Wenn Blackfish SQL ohne JDBC-Treiber verwendet wird, schließen Sie folgende Klassen aus:
    • com.borland.datastore.Sql*.class
    • com.borland.datastore.jdbc.*
    • com.borland.datastore.q2.*
  • Wenn Sie DataExpress verwenden und die Eigenschaft StorageDataSet.store immer auf eine Instanz von DataStore oder DataStoreConnection gesetzt ist, schließen Sie folgende Klassen aus:
    • com.borland.dx.memorystore.*
  • Wenn StorageDataSet verwendet wird, nicht jedoch QueryDataSet, QueryProvider, StoredProcedureDataSet oder StoredProcedureProvider, schließen Sie folgende Klassen aus:
    • com.borland.dx.sql.*
  • Wenn der Datenzugriff keine visuellen Komponenten aus den JBCL- oder dbSwing-Bibliotheken verwendet, schließen Sie folgende Klassen aus:
    • com.borland.dx.text.*
  • Wenn com.borland.dx.dataset.TextDataFile nicht verwendet wird, schließen Sie folgende Klassen aus:
    • com.borland.jb.io.*
    • com.borland.dx.dataset.TextDataFile.class
    • com.borland.dx.dataset.SchemaFile.class

AutoIncrement-Spalten

Spalten vom Typ int und long können jetzt als AutoIncrement-Werte angegeben werden.

Folgende Eigenschaften treffen auf alle Werte in AutoIncrement-Spalten zu:

  • Sie sind immer eindeutig
  • Sie dürfen nicht leer sein
  • Werte aus gelöschten Zeilen können nie wiederverwendet werden

Durch diese Attribute eignen sich AutoIncrement-Spalten optimal für einspaltige Primärschlüssel vom Typ integer/long.

Bei AutoIncrement-Spalten handelt es sich um den "internal row"-Bezeichner einer Zeile. Daher bieten sie den schnellstmöglichen Direktzugriffspfad zu einer bestimmten Zeile in einer Blackfish SQL-Tabelle.

Jede Tabelle kann eine AutoIncrement-Spalte enthalten. Wenn Sie die AutoIncrement-Spalte als Ersatz für Ihren Primärschlüssel verwenden, wird der Platz einer Ganzzahlspalte und eines sekundären Indexes in Ihrer Tabelle eingespart. Der Blackfish SQL Query Optimizer optimiert Abfragen, die auf eine AutoIncrement-Spalte in einer WHERE-Klausel verweisen. Anweisungen zur Verwendung der AutoIncrement-Spalten mit SQL finden Sie unter “AutoIncrement-Spalten mit SQL verwenden” in der SQL-Referenz.

AutoIncrement-Spalten unter Verwendung von DataExpress-JavaBeans von Blackfish SQL für Java

Um mit DataExpress eine Tabelle mit einer AutoIncrement-Spalte zu erstellen, setzen Sie die Eigenschaft Column.AutoIncrement auf true, bevor Sie eine Tabelle öffnen. Wenn Sie eine vorhandene Tabelle ändern möchten, müssen Sie die Methode StorageDataSet.restructure() aufrufen.

Blackfish SQL-Companion-Komponenten

Die dbSwing-Komponentenbibliothek enthält zwei Komponenten (auf der Registerseite Mehr dbSwing in der Komponentenpalette), die die Erstellung von robusten Blackfish SQL-Anwendungen erleichtern.

  • DBDisposeMonitor entfernt beim Schließen von Containern automatisch datensensitive Komponentenressourcen. Die Komponente verfügt über eine closeDataStores-Eigenschaft. Wenn die Eigenschaft den Wert true (Vorgabe) hat, werden alle Blackfish SQL-Datenbanken, die mit den von dieser Eigenschaft bereinigten Komponenten verbunden sind, automatisch geschlossen. Wenn Sie beispielsweise die Komponente DBDisposeMonitor in einen von Ihnen bearbeiteten JFrame ziehen, der mit einer Blackfish SQL-Datenbank verbundene dbSwing-Komponenten enthält, schließt DBDisposeMonitor automatisch die Blackfish SQL-Datenbank für Sie, wenn Sie JFrame schließen. Diese Komponente ist besonders praktisch, wenn Sie zum Experimentieren mit Blackfish SQL einfache kleine Anwendungen erstellen.
  • DBExceptionHandler verfügt über einen Schalter zum Beenden. Dieser ist standardmäßig sichtbar, Sie können ihn aber über benutzerdefinierte Einstellungen verbergen. Wenn Sie auf diesen Schalter klicken, werden alle geöffneten Blackfish SQL-Datenbankdateien, die gefunden werden, automatisch geschlossen.DBExceptionHandler ist das Standard-Dialogfeld, das von dbSwing-Komponenten angezeigt wird, wenn eine Exception auftritt.

Datenmodule für DataExpress-JavaBean-Komponenten von Blackfish SQL für Java verwenden

Beim Verwenden einer Blackfish SQL-Tabelle mit einem StorageDataSet sollten Sie in Erwägung ziehen, alle Komponenten in Datenmodulen zu gruppieren. Aktualisieren Sie alle Referenzen auf diese StorageDataSets mithilfe von DataModule-Zugriffsmethoden, wie z. B. businessModule.getCustomer. Der Grund dafür ist, dass ein Großteil der durch StorageDataSets bereitgestellten Funktionen durch Eigenschafts- und Ereigniseinstellungen gesteuert wird.

Obwohl die meisten wichtigen strukturellen StorageDataSet-Eigenschaften in der Blackfish SQL-Tabelle selbst in beständiger Form vorhanden sind, gilt dies nicht für die Klassen, die die Ereignis-Listener-Schnittstellen implementieren. Durch das Instantiieren des StorageDataSets mit allen Ereignis-Listenern, Begrenzungen, berechneten Feldern und Filtern, die durch Ereignisse implementiert werden, wird sichergestellt, dass diese zur Laufzeit und in der Entwurfsphase korrekt verwaltet werden.

Siehe auch

In anderen Sprachen