segunda-feira, outubro 17, 2005

SQL SERVER SP4 - Problemas de Performance

Recentemente fui notificado por alguns amigos meus sobre problemas de performance do SP 4 do SQL Server 2000.

O problema parece que surgiu com uma mudança de interpretação de valores numéricos do otimizador do SQL Server.

Tecnicamente explicando, no SP 3 se você tivesse um índice em uma coluna numérica (5,0), ou seja, sem casa decimal e passasse 1.0 para ela, a pesquisa seria feita por índice utilizando a técnica INDEX SEEQ, que é a melhor forma de pesquisa utilizada.

Já a partir do SP 4, a mesma situação acima iria gerar um INDEX SCAN ou até mesmo parar de usar aquele índice, pois o custo do SQL poderia aumentar muito e o SQL Server definir outro algoritmo para buscar os dados.

Oracle - Migração da Versão 8 e 9 para a Versão 10

Abaixo está alguns problemas que podem surgir com a migração da Versão do Oracle 8 e 9 para a Versão 10.x

Perda de performance
1 – Pode ser causada por incompatibilidade entre a versão do Oracle e a sua aplicação. Já se sabe que a versão do Oracle 10.2 tem problemas de performance com aplicações PowerBuilder.

Erro em comandos SQL
1 – A partir da versão 10 do Oracle, não é mais suportado o uso de conversão implícita. Ou seja, se por um erro de desenvolvimento o usuário definiu uma clausura WHERE com um campo numérico, mas passou o valor string, o Oracle irá gerar um erro. Nas versões anteriores o Oracle faria a conversão implícita dos dados, não retornando erro.
2 – Na versão 8.0.5, o Oracle convertia um VARCHAR com o formado ‘yyyymm’ para data. Este mesmo procedimento gera erro no Oracle 10.

Erro na Compilação de PACKAGES
1 – Anteriormente não era necessário declarar o parâmetro DEFAULT na SPECIFICATION, apenas sendo obrigatório defini-lo no BODY. Mas a partir da versão 10, ocorrerá um erro se você não declarar.

Oracle 10 - Problema de Performance

Só para documentar, a Versão Oracle 10.2 está gerando problemas de Performance. Recentemente acompanhei algumas empresas que trabalham com aplicações PowerBuilder e fizeram a migração de Oracle 10.1 para Oracle 10.2 e a performance dos aplicativos piorou, na média, 5 vezes.
Ainda não conseguimos descobrir a origem do problema, mas assim que tiver mais notícias, irei publicar no Blog.

segunda-feira, outubro 10, 2005

PowerBuilder - Exibindo ToolTip / PowerTip

No site abaixo encontra-se uma exemplo de como implementar ToolTip ( ou PowerTip, como é chamado no PowerBuilder) em colunas do PowerBuilder.

segunda-feira, outubro 03, 2005

Diversos - Extensão de arquivos

Este post possui um link para um site com várias extensões de arquivos documentadas.

Diversos - Manual do Profissional deTI

MANUAL BÁSICO DE COMO "UTILIZAR" UM PROFISSIONAL DE TI...COISAS QUE O CLIENTE PRECISA SABER: (e o chefe também...!!!)

1) PROFISSIONAL DE TI dorme.Pode parecer mentira, mas PROFISSIONAL DE TI precisa dormir como qualqueroutra pessoa. Esqueça que ele tem celular e telefone em casa, ligue só parao escritório.

2) PROFISSIONAL DE TI come.Parece inacreditável, mas é verdade.PROFISSIONAL DE TI, também, precisa se alimentar e tem hora para isso.

3) PROFISSIONAL DE TI pode ter família.Essa é a mais incrível de todas: mesmo sendo um PROFISSIONAL DE TI, a pessoaprecisa descansar no final de semana para poder dar atenção à família, aosamigos e a si próprio, sem pensar ou falar de redes, sistemas,computadores...

4) PROFISSIONAL DE TI, como qualquer cidadão, precisa de dinheiro.Por essa você não esperava, né? É surpreendente, mas PROFISSIONAL DE TItambém paga impostos, compra comida, precisa de combustível, roupas esapatos, e ainda consome Lexotan para conseguir relaxar...

5) Ler, estudar também é trabalho.E trabalho sério. Pode parar de rir. Não é piada.

6) De uma vez por todas, vale reforçar: PROFISSIONAL DE TI não évidente, não joga tarô e nem tem bola de cristal.Ele precisa planejar, consultar fornecedores, fazer visita técnica...para poder maturar as propostas e superar as expectativas.Se você quer um milagre, tente uma macumba e deixe o pobre do PROFISSIONALDE TI em paz.

7) Em reuniões de amigos ou festas de família, o PROFISSIONAL DE TIdeixa de ser PROFISSIONAL DE TI e reassume seu posto de amigo ouparente, exatamente como era antes dele ingressar nesta profissão.Não peça conselhos, dicas ... ele tem direito de se divertir.

8) Não existe, apenas, um upgradezinho - qualquer upgrade é umprojeto, requer atenção, dedicação, precisa ser pensado, estudado,analisado e, é claro, cobrado. Esses tópicos podem parecer inconcebíveis auma boa parte da população mas servem para tornar a vida do PROFISSIONAL DETI mais suportável.

9) Quanto ao uso do celular: celular é ferramenta de trabalho. Por favor,ligue, apenas, quando necessário. Fora do horário de expediente, mesmoque você, ainda, duvide, o PROFISSIONAL DE TI pode estar fazendoalgumas coisas que você nem pensou que ele fazia, como dormir ou namorar,por exemplo

10) Pedir o mesmo orçamento 15 vezes não vai mudar a resposta. Por favor,peça no máximo três.

11) Quando o horário de trabalho do período da manhã vai até 12h, nãosignifica que você pode ligar às 11h55. Se vc pretendia cometer essagafe, vá e ligue após o horário do almoço. O mesmo vale para a parte datarde: ligue no dia seguinte.

12) Quando PROFISSIONAL DE TI estiver apresentando um projeto, porfavor, não fique bombardeando com milhares de perguntas durante oatendimento. Isso tira a concentração, além de torrar a paciência.ATENÇÃO: Evite perguntas que não tenham relação com o projeto.

13) O PROFISSIONAL DE TI não inventa os preços e nem ganha comissãosobre os equipamentos comprados . Por isso, não pechinche!Lembrete: cara feia na hora de assinar cheque não diminui o que você tem quepagar. Se queria pagar menos, deveria ter feito você mesmo.

14) Os PROFISSIONAL DE TI não são os criadores do ditado "O barato saicaro"!!!

15) E, finalmente, PROFISSIONAL DE TI , também, é filho de DEUS e nãofilho disso que você pensou...

Artigo enviado por João Carlos de Souza Ribeiro

quarta-feira, setembro 21, 2005

PowerBuilder - Visão da Versão 11

No período de 21 a 25 de agosto de 2005, a Sybase apresentou em um congresso nos EUA a previsão de lançamento de produtos para os próximos anos.O que me chamou mais a atenção foi o PowerBuilder 11 e as características que ele terá. Baixo está uma cópia do slide que fala sobre o assunto :

* Early Alpha will start in September.
* Based entirely on .NET 2.0.
* Support Winforms and WebForms.
* Compiles PB code to C#
* Use refactored code from 10.5.
* Import PocketBuilder code line.
* proved Tablet PC support.
* ta Q1 – GA Q3 2006

É interessante chamar a atenção que o PowerBuilder 11 será totalmente DotNet. Quem quiser ver a PPT completa, acesse o site http://files.blog-city.com/files/M05/128508/b/techwave.pps

PowerBuilder - Recuperando a Data e versão de um arquivo

No site do Celso Côrtes tem dois artigos interessantes sobre como recuperar a data e versão de um arquivo.
Entre no site e faça uma pesquisa pela palavra data ou versão.

http://www.celso.cortes.nom.br/
Por : Celso Côrtes

sexta-feira, setembro 16, 2005

DotNet - DataWindow

Recentemente fiz uma avaliação da DataWindow .Net e fiquei muito satisfeito com a ferramenta.

Ela se compõe de dois módulos:

1) Designer
Este modulo é basicamente o PowerBuilder contendo apenas o Painter de DataWindow. Nele, você pode criar qualquer tipo de DataWindow e gravar em uma PBL ou utilizar qualquer datawindow que você possua nos seus sistemas (O impressionante, que funciona com qualquer DataWindow)
2) Viewer
Este modulo é utilizado pelo VisualStudio para exibir a DataWindow. Quando você instala o Software, ele cria uma pasta na barra de ferramentas do VisualStudio. Então, você deve arrastar o objeto para um formulário e utilizá-lo. Muito Fácil.

Bom, deixa-me contar o que achei de mais interessante:
· Utilização de DataWindow na Web : Você pode utilizar qualquer tipo de DataWindow em formulários Windows e Web, para cadastro e consulta. O interessante é que da DataWindow DotNet gera o código em JavaScript, não necessitando utilizar Plugin.
· Programação no DotNet: A Sybase fez um trabalho espetacular, utilizando os nomes das funções já existente no PowerBuilder para se trabalhar em DotNet. Por exemplo, para configurar o objeto transação de uma datawindow, você utiliza a função SetTrans, para buscar valor você utiliza GetItem, para enviar valor você utiliza SetItem. Dessa forma, eles conseguiram que o programador PowerBuilder utilize o VisualStudio sem precisar aprender como programar. Muito Bom.
· Um único fonte: Você pode continuar desenvolvendo a suas DataWindow junto a sua aplicação PowerBuilder e apenas atualizá-las no servidor Web, necessitando de apenas um fonte e manutenção em um ponto único.

O que achei mais interessante, que essa foi a melhor ferramenta que vi para gerar relatórios em Web, mesmo para quem nunca viu PowerBuilder, além de não ter problemas de licenciamento, como ocorre no CrystalReports.

Parabéns a Sybase por essa ferramenta.

PowerBuilder – Soluções que rodam 24 X 7

Em algumas situações, temos que criar aplicações que ficam executando o tempo todo, como monitores de rede, Call Center, Agendas de aplicativos e etc...
Recentemente, eu passei por duas situações (Transferência de arquivos entre sites e Call Center).
Vou pegar como exemplo a primeira aplicação. Deveríamos criar uma aplicação responsável por atualizar os aplicativos que são executados em todas as agências de uma empresa de Energia Elétrica, utilizando a arquitetura cliente/servidor (mais de 70 locais de transferência).
A partir da necessidade e de outras variáveis envolvidas (disponibilidade de Link, distância geográfica entre agencias, disponibilidade de servidores, horário de picos, atualizações urgentes de sistemas, etc...) resolvemos desenvolver um servidor de aplicação que ficariam rodando 24 horas e processando as requisições de cópias feitas pelo usuário.
O sistema foi desenvolvido em PowerBuilder e ficou da forma que desejávamos. Mas, após 24 horas em produção, começamos a deparar com um problema que colocou todo o trabalho de desenvolvimento em questionamento. A aplicação PowerBuilder alocava memória e não liberava a mesma.
Fazendo o monitoramento, percebi que quando instanciávamos os objetos e utilizava DataWindows, os mesmos não liberavam toda a memória alocada. Após 24 horas de processamento, a aplicação travava o servidor por falta de memória.
Após pensarmos em várias soluções e já pensando em outros projetos que teriam o mesmo problema, resolvemos criar um “Gerenciador de Serviços”.
Essa aplicação fica responsável por colocar a aplicação no ar. Após a aplicação no ar, ela faz o processamento necessário e fecha o sistema. Após X tempo que a aplicação fechou (no nosso caso, foi 1 minuto) o gerenciador coloca a aplicação no ar novamente.
Como o gerenciador não utiliza objetos e possui um código muito simples, ele não aloca memória desnecessária e não causa o problema que a aplicação teria.

Essa é uma solução simples, que foi essencial para o sucesso do nosso projeto.

sexta-feira, setembro 09, 2005

Observação sobre o método FIND da DataWindow

Recentemente passei por uma situação que pode afetar outras pessoas, por isso resolvi publicar essa informação.

O método FIND da DataWindow serve para localizarmos uma linha especifica a partir dos valores informados. A sintaxe do comando é

long dwcontrol.Find ( string expression, long start, long end )

Gostaria de chamar a atenção para a posição inicial da pesquisa. Se a posição inicial for maior que a posição final, o PowerBuilder ignora a posição inicial e faz a pesquisa a partir do inicio da datawindow (row = 1). Esta situação pode causar um loop infinito, se o você estiver procurando todas as ocorrências de um valor e existir uma ocorrência no último registro da datawindow.

Por exemplo:

Tenho a seguinte situação que procura a ocorrência de um string em todas as linhas da datawindow:

Do While VLLROW > 0
VLLROW = DW_1.FIND(VLSFIND,VLLROW + 1,DW_1.ROWCOUNT()
LOOP


Se a última linha da datawindow tiver o valor procurado, na próxima volta do LOOP, VLLROW +1 será maior que ROWCOUNT(). Nesta situação, o PowerBuilder irá ignorar VLLROW +1 e começar a pesquisa a partir da Linha 1, entrando em um LOOP infinito.

Para evitarmos essa situação, devemos alterar o código acima para que fique da seguinte forma:
Do While VLLROW > 0
VLLROW = DW_1.FIND(VLSFIND,VLLROW + 1,DW_1.ROWCOUNT()
IF VLLROW = DW_1.ROWCOUNT() THEN EXIT
LOOP



Estas características estão documentadas no HELP do PowerBuilder. Abaixo se encontra um trecho do Help com a informação sobre o procedimento acima

…When the start value becomes greater than end, the search reverses direction and Find would always succeed, resulting in an endless loop….

quinta-feira, setembro 08, 2005

PowerBuilder – Layout Corrompido

A partir da versão 7, o PowerBuilder permite ao desenvolvedor customizar o ambiente de desenvolvimento, podendo alterar o Layout. Com essa evolução, surgiu um novo problema que ocorre quando você não consegue abrir painter (janela de desenvolvimento) especifico (Window, DataWindow, Database, Menu, etc...).

Para resolver este problema, o usuário tem que voltar ao layout original do objeto. Como essa configuração é armazenada no registro, o usuário deve apagar a chave do registro que armazena essa configuração, voltando a configuração original.

A chave do registro que armazena a configuração encontra-se em HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\\Layout

PowerBuilder - Dicas de intergração com o PowerDesigner

Abaixo está um artigo publicado por Ricardo Couto de Souza

Fiz algumas experiências com o objetivo de ganhar produtividade no design de datawindows para sistemas modelados no PowerDesigner e encaminho minhas conclusões para os que se interessarem:

Ao projetar as colunas no PowerDesigner procurem seguir as seguintes orientações:
preencher o campo "Name" com o título que se deseja que apareça na datawindow;
preencher o campo "Code" com o nome da coluna no banco de dados (óbvio);
preencher o campo "Label" com o conteúdo que se deseja que seja a Tag na datawindow;
Após a execução do Script de criação das tabelas no banco de dados executem no menu do PowerDesigner: Client > Generate PowerBuilder Attributes...

Com isso serão populadas as tabelas do PowerBuilder PBCATCOL,PBCATEDT, PBCATFMT, PBCATTBL e PBCATVLD, que assessoram a criação de datawindows com os dados de colunas, edições, formatos de exibição, tabelas e validações, respectivamente.

A coluna PBC_CMNT da PBCATCOL recebe o conteúdo do campo LABEL' do PD e será usada para "Tag" da coluna para qualquer DW´
A coluna PBC_LABL da PBCATCOL recebe o conteúdo do campo 'NAME' do PD acrescido de ":" e será usada para "Título" da coluna para DW´s FreeForma;
A coluna PBC_HDR da PBCATCOL recebe o conteúdo campo 'NAME' e é usada para "Título" da coluna para DW´s Tabulares
Para que os itens 2 e 3 funcionem é preciso garantir que nos Extenderd Attributes da tela de configuração de colunas do PowerDesigner o campo "Label " seja igual a "%ColumnName%:" e Header seja "%ColumnName%".

O objetivo do meu estudo se restringiu a ganhar produtividade na obtenção automática dos Títulos e Tag´s das colunas nas DW, que utilizam colunas da tabela PBCATCOL. Explorando-se um pouco mais podemos ganhar também nas máscaras, edições e validações.

Por Ricardo Couto de Souza

PowerBuilder - Versão 10.5

No site do Celso Cortes tem este artigo com informações sobre o PowerBuilder 10.5

Informática - O que é UNICODE?

Achei este artigo muito interessante no site do Celso Cortes. Vale a pena dar uma lida.

sexta-feira, julho 15, 2005

quinta-feira, julho 14, 2005

PowerBuilder - Empresas que utilizam PowerBuilder no Brasil

1 - Ambev
2 - AMIL planos de saúde.
3 - ArtInfo - Sistema de Gestão de Recursos Humanos
4 - Attps informática
5 - Banco ABN-AMRO
6 - Banco BBA
7 - Banco BBM
8 - Banco do Nordeste
9 - Banco Finaustria
10 - Banco SAFRA.
11 - Banco Mercantil
12 - Banco Santander
13 - Banco Tokio-Mitsubishi S.A.
14 - Banco Votorantim
15 - Bank Boston
16 - Basf S.A
17 - BCP
18 - BNP - Banque Nationale de Paris
19 - Bovespa - Bolsa de Valores do Estado de São Paulo
20 - Bozano
21 - Caixa Econômica Federal
22 - Carioca Engenharia ( Christiane Nielsen )
23 - Carrefour
24 - Caterpillar do Brasil
25 - CFLCL - Cia de Força e Luz de Cataguases Leopoldina( Primeira empresa a utilizar o PowerBuilder no Brasil)
26 - Cia de Processamento de dados do RS RGE
27 - CITROSUCO PAULISTA S/A ( Maior exportadora de Suco de Laranja do País )
28 - CODIUB - Companhia de Processamento de dados de Uberaba
29 - Companhia Vale do Rio Doce
30 - Confederação Nacional da Indústria
31 - Consorcio RodoBens
32 - Construtora Norberto Odebrecht
33 - Coperguaçu ( Maior Cooperativa de criação de frangos do país )
34 - Credicard S/A
35 - CST - Companhia Ciderurgica de Tubarão
36 - DBMS COMPSIS
37 - DBMS Tecnologia da Informação
38 - Deten Química
39 - DLC CISS - Automação Comercial
40 - ECAD MasterSaf
41 - EDS - Electronic Data Systems do Brasil ( Banco GM )
42 - EDS - Electronic Data Systems do Brasil ( Cartão de Crédito )
43 - EDS - Electronic Data Systems do Brasil ( GM )
44 - EDS - Electronic Data Systems do Brasil ( Visanet )
45 - Energ Power Ltda - Belo horizonte - MG
46 - Ericsson
47 - Firestone
48 - Fornecedora de internet dedicada Unisinos
49 - Fundação Baiana de Cardiologia
50 - Fundação José Silveira
51 - Golden Cross
52 - GoodLife Belo Horizonte
53 - Grupo Luizeni(Corretora) - Patrocinio/MG
54 - Grupo Martins Atacadista - Uberlandia/MG
55 - HSBC
56 - IBGE - Instituto Brasileiro de Geografia e Estatística - RJ
57 - IBM do Brasil
58 - Laboratório Clínico Delboni Auriemo
59 - Line system - Uberlandia
60 - LOGOCENTER
61 - Nutris Tecnologia E Sistemas De Nutrição Ltda
62 - OAB Minas Gerais
63 - Peixoto Atacadista - Uberlandia
64 - Pirelli Cabos S.A.
65 - Pirelli Pneus S.A.
66 - Porto Seguro – Seguros
67 - PowerLogic
68 - Prefeitura Municipal de Uberaba
69 - Procenge - Companhia de Informática de Pernambuco
70 - Prodaub - Processament de dados de Uberlandia
71 - Prodemge - Cia de Processamento de Dado de Minas Gerais
72 - Racional Engenharia
73 - RBS - Afiliada à rede globo - região sul
74 - Redecard S/A
75 - RK Hotéis e Turismo S/A
76 - Seguros de Saúde
77 - Shell do Brasil
78 - Shop Tour
79 - SICS – HELP Informática
80 - softwarehouse Cumerlato & Schuster
81 - softwarehouse InfoSaude
82 - softwarehouse Van Communications
83 - TecBan
84 - Tecnovia Informática
85 - Telefonica ( GuiaMais )
86 - Telematic - Engenharia e Teleinformática Ltda ( Salvador/BA )
87 - Telepar - Telecomunicações Do Paraná S.A. ( Brasil Telecom )
88 - TotalBanco
89 - TQI - Uberlandia
90 - Trans Cearense - Uberlandia / MG
91 - Transportadora Itapemirim S.A
92 - Trends Advance
93 - Tribanco de Uberlandia
94 - UFMG - Universidade Federal de Minas Gerais
95 - UFRGS - Universidade Federal do Rio Grande do Sul
96 - Uma Das Cias Elétricas Do RS Cigna Seguradora
97 - UNESC - Universidade do Extremo Sul Catarinense
98 - União Atacado ( Uberlandia)
99 - Unibanco
100 - Unitech Tecnologia de Informação
101 - Uniub - Universidade de Uberaba
102 - Universidade do Rio dos Sinos Procergs
103 - Unnisa S/A
104 - Visanet Companhia de Meios de Pagamento S/A
105 - Volkswagen do Brasil S/A
106 - Votorantim Mineração e Metais
107 - Xerox do Brasil
108 - Staff Informática
109 - Banco do Estado do Espírito Santo - BANESTES
110 - Compania Docas do ES - CODESA (Porto de Vitória)
111 - MasterSaf
112 - Viação Águia Branca - Transporte de Passageiros
113 - Pif Paf Alimentos
114 - Petrobras
115 - Matera System
116 - Banco BMG
117 - Ápia Consultoria e Sistemas Ltda

PowerBuilder - Problemas no envio de e-mail com o BLAT

Recentemente, me deparei com um problema no envio de e-mail utilizando o blat. Em algumas máquina o e-mail não era enviado

O problema ocorre porque o blat utiliza o serviço SMTP (porta 25) para enviar e-mail e a versão do VirusScam 8.0 bloqueia essa porta.

Quem estiver utilizando essa versão do antivírus, vai ter que seguir os seguintes passos para resolver o problema:
1 - Vá ao Console do VirusScam
2 - Clique com o botão direito em Proteção de Acesso e selecione Propriedades
3 - Desmarque a opção Impedir que worms de envio em massa de e-mail.....
4 - Clique em Ok e feche todas as janelas

Em algumas empresas, essa configuração pode ser feita centralmente, no servidor do antivírus.

sexta-feira, julho 01, 2005

Cursor X DataStore

Apesar de muitas pessoas utilizarem DataStore ao invés de cursor, a maioria não sabe quais são as vantagens e em qual situação o Cursor é melhor que a DataStore.



Para explicar as vantagens, primeiro temos que entender como os dois objetos funcionam.



A maioria dos cursores são composto de 4 comandos:

* Declare : Declara a variável e atribui o comando SQL que será executado, não fazendo acesso ao banco de dados.

* Open : Abre o cursor. Neste momento, é enviando um comando ao SGBD que executa a Query e carrega o resultado na memória do SGBD. Existem vários tipos de cursor e cada um funciona de uma forma, mas geralmente, é criada uma imagem do resultado na memória do SGBD.

* Fetch : Recupera o registro. Neste momento, é feito um acesso ao banco de dados, buscando o próximo registro na tabela temporária.

* Close : Fecha o cursor. Neste momento é feito um acesso ao SGBD para fechar e libera a memória que estava sendo utilizada pela tabela temporária.



Como vocês podem perceber, apenas o comando Declare não faz um acesso ao banco de dados. Como cada acesso ao banco de dados gera 2 tráfegos na rede (O envio do pacote com a solicitação e o recebimento do resultado), além de aumentar muita a utilização do processador do cliente, pois todos os pacotes de rede devem ser tratados (empacotados e desempacotados) pelo processador. A quantidade de acesso ao banco de dados degrada a performance do aplicativo, além de aumentar o trafego da rede, prejudicando a performance de outros aplicativos.



Outro ponto negativo do Cursor é que existem comando que fecham o cursor, por exemplo, na maioria dos SGBDs, se os comandos COMMIT e ROLLBACK forem executados com o cursor aberto, eles automaticamente fecham o curso, podendo gerar erro no aplicativo.



Já a DataStore funciona da seguinte forma:

* Quando você executa RETRIEVE na DataStore, o comando SQL é enviado ao banco de dados, processado e todos os dados são recuperados para a DataStore.



Essa solução possui uma perda de performance no primeiro momento, porque todos os dados são transferidos de uma única vez para o cliente, mas possui uma melhor performance se observarmos o processamento total, pois é feito apenas um acesso a base de dados (dois tráfegos de rede).



Outro problema da DataStore é que todos os dados são retornados para a memória da aplicação cliente, por isso, se a quantidade de dados recuperados for muito grande ou a memória do cliente for pouca, pode forçar a máquina a utilizar memória virtual (Paginação), gerando uma perda de performance no aplicativo e até mesmo cancelamento do processando por falta de memória.



Resumindo, os seguintes fatores influenciam a utilização de Cursor ou DataStore:

- Quantidade de usuários conectados ao SGBD (Quanto maior a quantidade de usuários conectados ao SGBD, maior a tendência de utilizar DataStore)

- Memória disponível no cliente (Quanto maior a quantidade memória, maior a tendência de utilizar datastore)

- Quantidade de Dados Recuperados (Quanto menor o número de colunas recuperado por registro, maior a tendência a utilizar a datastore)

- Qualidade da Rede (Quanto mais rápida a rede, maior a tendência a utilizar Cursor)

- Recursos disponíveis no servidor (Memória e processador) (Quanto maior os recurso disponíveis no servidor, maior a tendência a utilizar Cursor)

Sendo, que os recursos que mais degradam a performance são os seguintes, na ordem listados:

- Quantidade de usuários.

- Utilização de espaço alem do disponível na memória física + memória virtual

- Quantidade de dados trafegados pela rede

- Velocidade do Processador no servidor

- Velocidade do Processador no cliente

- Utilização de memória virtual



Na regra geral, devemos adotar que se o cliente tem memória disponível para executar a datastore, devemos utilizar datastore, ao contrário, utilizamos o Cursor. Mas, podemos analisar outros fatores antes de determinar qual objeto utilizar, podendo adotar até uma solução mista, por exemplo, recuperar blocos de registros utilizando datastore.