Use ORDA para aumentar o desempenho no modo Cliente/Servidor

Tradução automática de Deepl

A utilização de ORDA para aceder a tabelas grandes (especialmente aquelas com relações) no modo Cliente/Servidor foi grandemente melhorada. Com 4D v17 R5, verá 2-3xs melhor desempenho LAN e até 30xs mais rápido desempenho WAN. E o melhor de tudo – não há necessidade de alterar nada no seu código, é tudo automático. Interessante, não é? Bem, vamos mergulhar nos detalhes.

Normalmente, ao carregar um registo numa aplicação cliente, todos os campos do registo são transferidos a partir do servidor. Mesmo aqueles que não são necessários. Portanto, o desempenho depende da concepção da sua aplicação, da estrutura da sua base de dados, e das capacidades da rede … especialmente quando se utilizam tabelas grandes com campos múltiplos ou grandes. Por exemplo, numa WAN lenta, utilizando apenas alguns campos em caixas de listagem baseadas na selecção (de tabelas com dezenas de campos com muitas relações/campos e textos/fotografias grandes), a sua aplicação estará em breve fora de serviço.

Os pedidos ORDA utilizavam anteriormente o mesmo princípio de carregamento de campos … até agora! Com v17 R5, o servidor analisa os atributos de que necessita em cada dataclass e identifica os atributos relacionados para que apenas os dados solicitados sejam transferidos entre o servidor e o cliente.

ESTUDO DE CASO

Para ilustrar estas melhorias, vamos utilizar uma base de dados simples:

A tabela do Livro tem 1.000 registos. O seu campo de resumo contém entre 100 e 2.000 caracteres e o seu campo de miniaturas contém cerca de 10KB de imagens. Na tabela de Autor relacionada, o campo da biografia contém 10.000 caracteres em cada registo.

Usando esta base de dados, criámos duas caixas de listagem baseadas na selecção: uma usando uma selecção de entidade ORDA e a outra usando uma selecção clássica. Em cada caixa de listagem, escolhemos exibir o título do livro com o seu autor, a fim de activar relações. Também adicionámos uma acção para percorrer automaticamente a caixa de listagem para que nenhuma acção humana possa perturbar os resultados:

As medidas na tabela abaixo mostram os quadros TCP que foram transmitidos entre o servidor e o cliente (incluindo todas as respostas de reconhecimento) do exemplo no vídeo. A ligação de rede do cliente é do tipo Wi-Fi “802.11ac” (download de 250Mbps, upload de 100Mbps , com atraso de 1ms):

Mode Frames Overall size (bytes) Duração (ms)
Clássico 4,070 473,924 5,747
ORDA 46 6,744 692

Como pode ver, a utilização de ORDA significa que apenas alguns quadros são transferidos! E duração? Quanto mais lenta for a rede, maior será a diferença entre a ORDA e a abordagem clássica.

Um novo conceito: contexto OPTIMIZAÇÃO

Isto permite registar o que o sistema aprendeu, e depois reutilizá-lo mais tarde. Para o fazer, basta criar um objecto opção contendo um atributo“contexto” e depois especificar o valor desejado antes de definir o objecto como parâmetro:

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

Este objecto de opção pode agora ser utilizado com o Create entity selection e os seguintes métodos de membros: dataClass. query (), entidadeSelecção. query (), dataClass. fromCollection (), e dataClass. all().

N.B: Na tabela de medições, não activámos a característica de contexto para sermos o mais exactos possível.

Para concluir:

A ORDA simplifica os seus desenvolvimentos:

  • Acelera a transferência de informação – sem alterações de código.
  • Não precisa de mover campos grandes de uma tabela e armazená-los numa tabela relacionada a 1-1 para evitar impactos no modo Cliente/Servidor.
  • Quando quiser aceder ao servidor fora da LAN, pode agora ligar directamente o cliente … sem utilizar tecnologias de ambiente de trabalho remoto.
Avatar
• Proprietário do produto - Damien Fuzeau entrou ao time 4D Product em fevereiro de 2019. Como Proprietário do Produto, está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Damien é formado em engenharia de software pela Universidade de Nantes. Trabalhou mais de 23 anos em sua empresa anterior, primeiro como desenvolvedor (descobrindo 4D em 1997), e mais tarde como gerente de engenharia e arquiteto de software. Essa empresa é um Partner OEM de 4D e lançou softwares empresariais baseados em 4D para milhares de usuários em centenas de servidores. Portanto Damien está acostumado ao desenvolvimento e lançamento de 4D em contextos multilinguais.