Verwendung von ORDA zur Leistungssteigerung im Client/Server-Modus

Automatisch übersetzt von Deepl

Die Verwendung von ORDA für den Zugriff auf große Tabellen (insbesondere solche mit Beziehungen) im Client/Server-Modus wurde erheblich verbessert. Mit 4D v17 R5 wird die LAN-Leistung um das 2-3fache und die WAN-Leistung um das 30fache gesteigert. Und das Beste daran: Sie müssen nichts an Ihrem Code ändern, alles läuft automatisch. Interessant, nicht wahr? Nun, lassen Sie uns die Details betrachten.

Wenn Sie einen Datensatz in einer Client-Anwendung laden, werden normalerweise alle Felder des Datensatzes vom Server übertragen. Auch solche, die Sie nicht benötigen. Daher hängt die Leistung von Ihrem Anwendungsdesign, Ihrer Datenbankstruktur und den Netzwerkkapazitäten ab … vor allem, wenn Sie große Tabellen mit mehreren oder großen Feldern verwenden. Wenn Sie beispielsweise in einem langsamen WAN nur wenige Felder in auswahlbasierten Listenfeldern (von Tabellen mit Dutzenden von Feldern mit vielen Beziehungen/Feldern und großen Texten/Bildern) verwenden, wird Ihre Anwendung bald nicht mehr funktionieren.

ORDA-Anfragen nutzten bisher das gleiche Feldladeprinzip … bis jetzt! Mit v17 R5 analysiert der Server die Attribute, die Sie in jeder Datenklasse benötigen, und identifiziert die zugehörigen Attribute, so dass nur die angeforderten Daten zwischen dem Server und dem Client übertragen werden.

FALLSTUDIE

Um diese Verbesserungen zu veranschaulichen, verwenden wir eine einfache Datenbank:

Die Tabelle Book hat 1.000 Datensätze. Das Feld „Zusammenfassung“ enthält zwischen 100 und 2.000 Zeichen und das Feld „Miniaturansicht“ enthält etwa 10 KB an Bildern. In der zugehörigen Tabelle Autor enthält das Feld Biografie in jedem Datensatz 10.000 Zeichen.

Mit dieser Datenbank haben wir zwei auswahlbasierte Listenfelder erstellt: eines mit einer ORDA-Entitätsauswahl und das andere mit einer klassischen Auswahl. In jedem Listenfeld wird der Titel des Buches zusammen mit dem Autor angezeigt, um Beziehungen zu aktivieren. Außerdem haben wir eine Aktion hinzugefügt, mit der das Listenfeld automatisch gescrollt wird, damit kein menschliches Handeln die Ergebnisse stören kann:

Die Messungen in der Tabelle unten zeigen die TCP-Frames, die zwischen dem Server und dem Client (einschließlich aller Bestätigungsantworten) des Beispiels im Video übertragen wurden. Die Netzwerkverbindung des Clients ist Wi-Fi Typ „802.11ac“ (250Mbps Download, 100Mbps Upload , mit 1ms Verzögerung):

Mode Frames Overall size (bytes) Dauer (ms)
Klassisch 4,070 473,924 5,747
ORDA 46 6,744 692

Wie Sie sehen, bedeutet die Verwendung von ORDA, dass nur wenige Bilder übertragen werden! Und die Dauer? Je langsamer das Netz ist, desto größer ist der Unterschied zwischen ORDA und dem klassischen Ansatz.

Ein neues Konzept: OPTIMIERUNGS-Kontext

Damit können Sie aufzeichnen, was das System gelernt hat, um es später wiederzuverwenden. Dazu müssen Sie lediglich ein Optionsobjekt mit einem„Kontext„-Attribut erstellen und dann den gewünschten Wert angeben, bevor Sie das Objekt als Parameter setzen:

Wenn (Form.currentContext=Null)
Form .currentContext:=New object("context"; "contextListboxBookAndAuthor")
End if
Form .books:=ds.Book.all(Form.currentContext)

Dieses Optionsobjekt kann jetzt mit dem Create entity selection Befehl und den folgenden Methoden verwendet werden: dataClass. query (), entitySelection. query (), dataClass. fromCollection (), und dataClass. all().

N.B.: In der Messtabelle haben wir die Kontextfunktion nicht aktiviert, um so genau wie möglich zu sein.

Zum Schluss:

ORDA vereinfacht Ihre Entwicklungen:

  • Es beschleunigt die Übertragung von Informationen – ohne Änderungen am Code.
  • Sie müssen keine großen Felder aus einer Tabelle auslagern und in einer 1-1-Tabelle speichern, um Auswirkungen auf den Client/Server-Modus zu vermeiden.
  • Wenn Sie außerhalb des LANs auf den Server zugreifen wollen, können Sie den Client jetzt direkt anschließen … ohne Remote-Desktop-Technologien zu verwenden.
Avatar
- Product Owner - Damien Fuzeau ist seit Februar 2019 Mitglied des 4D Produktteams. Als Product Owner ist er für das Schreiben von User Stories zuständig, die er dann in funktionale Spezifikationen umsetzt. Zu seinen Aufgaben gehört es auch, dafür zu sorgen, dass die gelieferten Funktionsimplementierungen den Anforderungen der Kunden entsprechen. Damien hat an der Universität von Nantes einen Abschluss in Softwaretechnik gemacht. Er verbrachte mehr als 23 Jahre in seinem früheren Unternehmen, zunächst als Entwickler (er entdeckte 4D im Jahr 1997) und später als technischer Leiter und Softwarearchitekt. Dieses Unternehmen ist ein 4D OEM Partner und hat 4D basierte Geschäftssoftware für Tausende von Usern auf Hunderten von Servern eingesetzt. Damien ist also mit der Entwicklung und dem Einsatz von 4D in einem mehrsprachigen Kontext vertraut.