Utilizzare ORDA per aumentare le prestazioni in modalità client/server

Tradotto automaticamente da Deepl

L’utilizzo di ORDA per accedere a tabelle di grandi dimensioni (in particolare quelle con relazioni) in modalità Client/Server è stato notevolmente migliorato. Con 4D v17 R5, le prestazioni della LAN sono migliorate di 2-3 volte e quelle della WAN fino a 30 volte. E soprattutto non c’è bisogno di modificare nulla nel codice, è tutto automatico. Interessante, vero? Bene, entriamo nei dettagli.

In genere, quando si carica un record in un’applicazione client, tutti i campi del record vengono trasferiti dal server. Anche quelli che non servono. Pertanto, le prestazioni dipendono dalla progettazione dell’applicazione, dalla struttura del database e dalle capacità della rete… soprattutto quando si utilizzano tabelle di grandi dimensioni con campi multipli o di grandi dimensioni. Ad esempio, su una WAN lenta, utilizzando solo pochi campi in caselle di riepilogo basate sulla selezione (di tabelle con decine di campi con molte relazioni/campi e testo/immagini di grandi dimensioni), l’applicazione sarà presto fuori servizio.

Le richieste ORDA in precedenza utilizzavano lo stesso principio di caricamento dei campi… fino ad ora! Con la versione 17 R5, il server analizza gli attributi necessari in ogni classe di dati e identifica gli attributi correlati, in modo da trasferire tra il server e il client solo i dati richiesti.

STUDIO DI CASO

Per illustrare questi miglioramenti, utilizziamo un semplice database:

La tabella Libro ha 1.000 record. Il suo campo riassunto contiene da 100 a 2.000 caratteri e il campo miniature contiene circa 10KB di immagini. Nella tabella Author, il campo biografia contiene 10.000 caratteri per ogni record.

Utilizzando questo database, abbiamo creato due caselle di riepilogo basate sulla selezione: una che utilizza una selezione di entità ORDA e l’altra che utilizza una selezione classica. In ogni casella di riepilogo, abbiamo scelto di visualizzare il titolo del libro insieme all’autore, per attivare le relazioni. Abbiamo anche aggiunto un’azione per far scorrere automaticamente la casella di riepilogo, in modo che nessuna azione umana possa disturbare i risultati:

Le misure riportate nella tabella sottostante mostrano i frame TCP trasmessi tra il server e il client (comprese tutte le risposte di riconoscimento) dell’esempio riportato nel video. La connessione di rete del client è di tipo Wi-Fi “802.11ac” (250Mbps in download, 100Mbps in upload, con 1ms di ritardo):

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

Come si può notare, l’utilizzo di ORDA comporta il trasferimento di pochi fotogrammi! E la durata? Più la rete è lenta, maggiore è la differenza tra ORDA e l’approccio classico.

Un nuovo concetto: contesto di OTTIMIZZAZIONE

Questo permette di registrare ciò che il sistema ha appreso e di riutilizzarlo in seguito. Per farlo, è sufficiente creare un oggetto opzione contenente un attributo“contesto” e specificare il valore desiderato prima di impostare l’oggetto come parametro:

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

Questo oggetto opzione può ora essere utilizzato con il comando Create entity selection e i seguenti metodi membri: dataClass. query (), entitySelection. query (), dataClass. fromCollection () e ClasseDati . all().

N.B.: Nella tabella delle misure, non abbiamo attivato la funzione di contesto per essere il più precisi possibile.

Per concludere:

ORDA semplifica i vostri sviluppi:

  • Accelera il trasferimento delle informazioni, senza modifiche al codice.
  • Non è necessario spostare campi di grandi dimensioni da una tabella e memorizzarli in una tabella correlata 1-1 per evitare impatti sulla modalità Client/Server.
  • Quando si desidera accedere al server al di fuori della LAN, è ora possibile collegare direttamente il client… senza utilizzare tecnologie di desktop remoto.
Avatar
- Product Owner -Damien Fuzeau è entrato a far parte del team 4D Product nel febbraio 2019. In qualità di Product Owner, si occupa di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo lavoro consiste anche nell'assicurarsi che le implementazioni delle funzionalità fornite soddisfino le esigenze dei clienti.Damien si è laureato all'Università di Nantes in ingegneria del software. Ha trascorso più di 23 anni nella sua precedente azienda, prima come sviluppatore (scoprendo 4D nel 1997), poi come responsabile dell'ingegneria e architetto software. Questa azienda è un partner OEM di 4D e ha distribuito software aziendali basati su 4D per migliaia di utenti, su centinaia di server. Damien è quindi abituato allo sviluppo e alla distribuzione di 4D in un contesto multilingue.