O que usa menos memória da máquina ClientDataSet X Variavel
Pessoal,
Bom dia!
Em um sistema: Delphi7 + Firebird 1.5 + DbExpres
Algumas funções como - (Cadastrar, Editar, Excluir, etc ) - que o usuario logado vai fazer no sistema é controlado atravez do seu PERFIL DE ACESSO. Entao quando o usuario logar no sistema gostaria de deixar todas estas permissoes na mémoria para nao ter que ficar fazendo consulta a toda hora no banco de dados uma vez que o banco de dados do meu sistema esta hospedado em um servidor WEB. Estou pensando em deixar na mémoria os parametros de acesso que os usuarios mais usam como por exemplo no cadastro de cliente as opções para ( Cadastrar novo, Excluir, Editar ... etc ) porque assim seria mais rapido e como ja disse evitaria trafego de informações pela rede.
Minha preocupação depois evitar o trafego na rede é guardar estes parametros na memoria mas ocupando pouquissima memoria do sistema.
Minha duvida:
Primeira opção: Pensei em deixar estas informaçoes em um ClientDataSet que seria aberto no momento da abertura do sistema e o mesmo ficaria aberto com estas informações o tempo todo .... ou .. entao ....
Segunda opção: Abrir o mesmo ClientDataSet mencionado na primeira opção porem jogando os valores dele em variaveis que eu criaria no meu FormPrincipal.
E ai o que seria o melhor a fazer ?? Eu teria uma terceira opção que nao pensei ???
Obrigado pela atenção!!
Bom dia!
Em um sistema: Delphi7 + Firebird 1.5 + DbExpres
Algumas funções como - (Cadastrar, Editar, Excluir, etc ) - que o usuario logado vai fazer no sistema é controlado atravez do seu PERFIL DE ACESSO. Entao quando o usuario logar no sistema gostaria de deixar todas estas permissoes na mémoria para nao ter que ficar fazendo consulta a toda hora no banco de dados uma vez que o banco de dados do meu sistema esta hospedado em um servidor WEB. Estou pensando em deixar na mémoria os parametros de acesso que os usuarios mais usam como por exemplo no cadastro de cliente as opções para ( Cadastrar novo, Excluir, Editar ... etc ) porque assim seria mais rapido e como ja disse evitaria trafego de informações pela rede.
Minha preocupação depois evitar o trafego na rede é guardar estes parametros na memoria mas ocupando pouquissima memoria do sistema.
Minha duvida:
Primeira opção: Pensei em deixar estas informaçoes em um ClientDataSet que seria aberto no momento da abertura do sistema e o mesmo ficaria aberto com estas informações o tempo todo .... ou .. entao ....
Segunda opção: Abrir o mesmo ClientDataSet mencionado na primeira opção porem jogando os valores dele em variaveis que eu criaria no meu FormPrincipal.
E ai o que seria o melhor a fazer ?? Eu teria uma terceira opção que nao pensei ???
Obrigado pela atenção!!
Mmoreira
Curtidas 0
Respostas
Leonardobhbr
02/01/2007
Eu particulamente carrego em uma classe todas permissoes do usuário e leio a partir dela eu monto a query que carrega minha classe e despois destruo a query, uso as property da propria classe. Pois é mai rapido que um Client
GOSTEI 0
Aroldo Zanela
02/01/2007
Colega,
O uso de CDS implica na carga do MIDAS, portanto, seguramente irá consumir mais memória. Mas isto não significa diretamente nenhum problema, eis que o sistema de memória virtual do Windows se engarregará de prover os recursos. Pode ocorrer degradação da aplicação de for uma grande massa de dados.
Como você vai armazenar apenas dados e não comportamento, acho que um registro (record) ou matriz pode ser a melhor opção.
O uso de CDS implica na carga do MIDAS, portanto, seguramente irá consumir mais memória. Mas isto não significa diretamente nenhum problema, eis que o sistema de memória virtual do Windows se engarregará de prover os recursos. Pode ocorrer degradação da aplicação de for uma grande massa de dados.
Como você vai armazenar apenas dados e não comportamento, acho que um registro (record) ou matriz pode ser a melhor opção.
GOSTEI 0
Mmoreira
02/01/2007
Senhores,
Muito obrigado pela atenção. Creio que o mais correto a se fazer seria evitar o uso do ClientDataSet mesmo e no meu caso estava pensando em usar um Record, ficaria mais ou menos assim:
Seria isso mesmo, o que vcs acham?
Muito obrigado pela atenção. Creio que o mais correto a se fazer seria evitar o uso do ClientDataSet mesmo e no meu caso estava pensando em usar um Record, ficaria mais ou menos assim:
type TPermissaoCliente = record // Cadastrar novo cliente a partir da tela de atendimento Cli_Novo : Boolean; // Excluir cadastro de cliente Cli_Exclui : Boolean; // Salvar alterações relizadas no cadstro do cliente Cli_Salva : Boolean; end;
Seria isso mesmo, o que vcs acham?
GOSTEI 0