Verbindungen zu anderen Datenmengen einrichten

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Datenbankarchitektur


Es gibt spezialisierte Client-Datenmengen, die die BDE oder dbExpress verwenden, um eine Verbindung zu einem Datenbankserver einzurichten. Bei diesen spezialisierten Client-Datenmengen handelt es sich letztlich um zusammengesetzte Komponenten, die intern eine andere Datenmenge enthalten, um auf die Daten zuzugreifen, und die eine interne Provider-Komponente besitzen, um die Daten aus der Quelldatenmenge zu verpacken und Aktualisierungen auf den Datenbankserver zurückzuschreiben. Diese zusammengesetzten Komponenten verursachen einen gewissen Zusatzaufwand, weisen aber auch bestimmte Vorteile auf:

  • Client-Datenmengen stellen die robusteste Methode dar, mit zwischengespeicherten Aktualisierungen zu arbeiten. Standardmäßig schreiben andere Datenmengentypen Änderungen direkt auf den Datenbankserver zurück. Sie können den Netzwerkverkehr reduzieren, indem Sie eine Datenmenge einsetzen, die Aktualisierungen lokal zwischenspeichert und sie später innerhalb einer einzigen Transaktion zurückschreibt. Weitere Informationen über die Vorteile der Verwendung von Client-Datenbanken zum Zwischenspeichern von Änderungen finden Sie unter Mithilfe einer Client-Datenmenge Aktualisierungen zwischenspeichern.
  • Client-Datenmengen können Änderungen direkt auf einen Datenbankserver zurückschreiben, wenn die Datenmenge schreibgeschützt ist. Bei Verwendung von dbExpress ist dies die einzige Möglichkeit, Daten in der Datenmenge zu bearbeiten (es ist auch die einzige Möglichkeit, sich frei in den Daten zu bewegen, wenn dbExpress verwendet wird). Selbst wenn Sie nicht dbExpress verwenden, sind die Ergebnisse einiger Abfragen und aller Stored Procedures schreibgeschützt. Die Verwendung einer Client-Datenmenge bietet eine Standardmethode, solche Daten bearbeitbar zu machen.
  • Weil Client-Datenmengen direkt mit dedizierten Dateien auf einer Festplatte arbeiten, kann die Verwendung einer Client-Datenmenge kombiniert mit einem dateibasierten Modell ermöglichen, eine flexible "Aktenkoffer"-Anwendung zu entwickeln.

Neben diesen spezialisierten Client-Datenmengen gibt es eine generische Client-Datenmenge (TClientDataSet), die keine interne Datenmenge und keinen Datenmengen-Provider beinhaltet. Obwohl TClientDataSet über keinen eingebauten Datenbankzugriffsmechanismus verfügt, können Sie die Komponente mit einer anderen, externen Datenmenge verbinden, von der sie Daten abruft und an die sie Aktualisierungen sendet. Dieser Ansatz ist zwar etwas komplizierter, aber es gibt Situationen, in denen er zu bevorzugen ist:

  • Weil die Quelldatenmenge und der Datenmengen-Provider extern sind, haben Sie mehr Kontrolle darüber, wie sie Daten abrufen und Änderungen zurückschreiben. Beispielsweise weist die Provider-Komponente mehrere Ereignisse auf, die bei Verwendung einer spezialisierten Datenmenge zum Datenzugriff nicht zur Verfügung stehen.
  • Ist die Quelldatenmenge extern, können Sie sie in einer Haupt/Detail-Beziehung mit einer anderen Datenmenge verbinden. Ein externer Provider wandelt diese Kombination automatisch in eine einzige Datenmenge mit verschachtelten Details um. Ist die Quelldatenmenge intern, können Sie auf diese Weise keine verschachtelten Detailmengen erzeugen.
  • Die Verbindung einer Client-Datenmenge mit einer externen Datenmenge ist eine Architektur, die ganz einfach auf mehrere Schichten erweitert werden kann. Weil der Entwicklungsprozess mit wachsender Anzahl an Schichten komplizierter und aufwändiger werden kann, sollten Sie die Entwicklung Ihrer Anwendung als einschichtige oder zweischichtige Anwendung beginnen. Wenn der Datenumfang, die Anzahl der Benutzer sowie die Anzahl der verschiedenen Anwendungen, die auf die Daten zugreifen, anwächst, können Sie später eine Erweiterung zu einer mehrschichtigen Architektur vornehmen. Wenn Sie glauben, Sie brauchen irgendwann eine mehrschichtige Anwendung, könnte es sinnvoll sein, mit einer Client-Datenmenge mit externer Quelldatenmenge zu beginnen. Wenn Sie die Logik für den Datenzugriff und die Datenbearbeitung verschieben, schützen Sie auf diese Weise Ihren Entwicklungsaufwand, weil der Code wiederverwendet werden kann, wenn Ihre Anwendung anwächst.
  • TClientDataSet kann eine Verknüpfung zu beliebigen Quelldatenmengen einrichten. Das bedeutet, Sie können benutzerdefinierte Datenmengen verwenden (Komponenten von Drittanbietern), für die es keine entsprechende spezialisierte Client-Datenmenge gibt. Einige Delphi-Versionen beinhalten spezielle Provider-Komponenten, um eine Client-Datenmenge mit einem XML-Dokument statt mit einer anderen Datenmenge zu verbinden. (Das funktioniert genauso wie die Verbindung einer Client-Datenmenge mit einer anderen (Quell-) Datenmenge, außer dass der XML-Provider ein XML-Dokument statt einer Datenmenge verwendet. Nähere Informationen zu XML-Providern finden Sie unter XML-Dokument als Datenquelle für einen Provider verwenden.)

Es gibt zwei Versionen der Architektur, die eine Client-Datenmenge mit einer externen Datenmenge verbinden:

Siehe auch