0 évaluation0% ont trouvé ce document utile (0 vote)
261 vues5 pages
O documento discute a configuração do Borland Database Engine (BDE) para acessar bancos de dados Paradox locais e em rede. Ele explica os parâmetros NET DIR, LEVEL, TYPE, LANGDRIVER, BLOCK SIZE, FILL FACTOR, STRICTINTEGRTY e LOCAL SHARE do BDE e como configurá-los corretamente para evitar erros e garantir a integridade dos dados.
O documento discute a configuração do Borland Database Engine (BDE) para acessar bancos de dados Paradox locais e em rede. Ele explica os parâmetros NET DIR, LEVEL, TYPE, LANGDRIVER, BLOCK SIZE, FILL FACTOR, STRICTINTEGRTY e LOCAL SHARE do BDE e como configurá-los corretamente para evitar erros e garantir a integridade dos dados.
O documento discute a configuração do Borland Database Engine (BDE) para acessar bancos de dados Paradox locais e em rede. Ele explica os parâmetros NET DIR, LEVEL, TYPE, LANGDRIVER, BLOCK SIZE, FILL FACTOR, STRICTINTEGRTY e LOCAL SHARE do BDE e como configurá-los corretamente para evitar erros e garantir a integridade dos dados.
Voc alguma vez j escreveu um programa Delphi que usa tabelas Paradox locais, e recebeu mensagens de erro, tais como, "Not initialized for network access" ou "Directory is busy"? Voc j configurou um programa multi-usurio e descobriu que o usurio A no via as mudanas dos bancos de dados feitas pelo usurio B? O segredo para evitar esses problemas certamente a configurao do Borland Database Engine(BDE). Primeiramente, vamos configurar o diretrio Paradox na rede. Execute o BDE Administrator que acompanha o Delphi 3 ou 4, selecione a pgina Configuration e em Drivers | Native clique no Driver Paradox para ver as opes de configurao, conforme mostrada na figura 1. NET DIR Se seu programa acessar arquivos num drive compartilhado da rede, voc tem que configurar o parmetro NET DIR, que o path para o diretrio que contm o arquivo de controle do Paradox em rede, nomeado PDOXUSRS.NET. As regras seguintes aplicam-se para o path do NET DIR: Ter que apontar para um diretrio compartilhado na rede; Usurios que vo acessar as tabelas Paradox tero que ter direito de ler, escrever, criar, e deletar neste diretrio. O arquivo PDOXUSRS.NET ser criado automaticamente pelo BDE; Usurios que acessaro simultaneamente as tabelas Paradox num diretrio devem usar o mesmo diretrio de arquivo de controle em rede. O path do NET DIR deve ser o mesmo para todos os usurios; Se voc estiver configurando o BDE para uma rede peer-to-peer (ponto a ponto), h uma exceo para esta ltima regra: Como voc controla a rede peer-to-peer dependendo da verso do BDE que voc est utilizando(16 ou 32 bits)? Vamos analisar primeiro um caso mais fcil. O BDE de 32-bit suporta o arquivos de nome UNC, ento fcil providenciar um path para o NET DIR que fique igual para todas as mquinas. O formato de um path UNC : \\NomeServidor\ShareName\ShareDir onde o NomeServidor o nome da mquina em que o NET DIR vai residir, ShareName o nome atribudo para o diretrio compartilhado na rede, e ShareDir o path para um diretrio abaixo do diretrio compartilhado como ShareName. Usando UNC, o path do NET DIR ser o mesmo em todas as maquinas, incluindo o servidor. Veja abaixo um exemplo de path UNC: \\Servidor1\C\DiretorioTheClub Com o BDE de 16-bit, voc deve usar a mesma path do NET DIR em todas as mquinas, com uma exceo: a configurao do drive pode ser diferente. Por exemplo, suponha que o diretrio do arquivo de controle em rede seja C:\NETDIR no servidor. Em todas as outras mquinas, o drive C: do servidor mapeado para o drive G : Portanto, a configurao do NET DIR para essas mquinas deve ser G:\NETDIR Voc pode via programao fazer a configurao do NET DIR no arquivo de configurao do BDE em tempo de execuo, configurando a propriedade Session.NetFileDir. Por exemplo: Session.NetFileDir := G:\BDENET ; isso configurar o diretrio do arquivo de controle para o diretrio G:\BDENET. Se voc precisar mudar o diretrio do arquivo de controle no seu programa, faa isso no arquivo de projeto (.DPR) antes de qualquer formulrio ser aberto, ou no evento OnCreatedo formulrio principal antes de qualquer tabela ser aberta. Se voc configurar o diretrio do arquivo de controle na rede na unit principal , ou no arquivo de projeto, lembre-se de incluir a unidade DB na clusula uses .
Figura 1: Parmetros de configurao do driver Paradox no BDE LEVEL A estrutura interna das tabelas Paradox tem mudado muitas vezes no decorrer desses anos; o parmetro LEVEL determina a verso de tabela mais baixa (velha) que o BDE criar. A configurao default 4, que o primeiro formato introduzido com o Paradox 4.0 para DOS (e subseqentemente usado pelo Paradox 4.5 para DOS , Paradox 1.0 para Windows, e Paradox 4.5 para Windows). Tabelas de nvel 5 foram introduzidas no Paradox 5.0 para Windows, e tabelas de nvel 7 so sustentadas pelo Paradox 7.0 para Windows 95/98 e Windows NT, e Paradox 7 para Windows 3.1 . Voc pode usar tambm a configurao de nvel de tabela para 3 se voc precisar criar tabelas que podem ser acessadas pelo Paradox 3.5 para DOS ou verses mais recentes. O nvel de qualquer tabela que voc criar ser determinada pela caracterstica da mesma. Vamos dizer que o nvel da tabela no arquivo de configurao do BDE seja configurada para 4. Se voc criar uma tabela que use o tipo de campo long integer, ou qualquer tipo de campo adicionado no Paradox 5.0, o BDE criar automaticamente uma tabela de nvel 5. Se voc usar ndices nico ou secundrios descendentes, o BDE criar automa-ticamente uma tabela de nvel 7. Voc pode deixar tambm o nvel de tabela defaut configurada para 4 (o default) para uma mxima compatibilidade. Voc no ter uma performance melhor - ou qualquer outra vantagem - usando um nvel de tabela superior tabela ou uma estrutura de ndice exigida. TYPE O arquivo de parmetro TYPE configurado automaticamente pelo BDE; voc no deve mud-lo. Os nicos dois valores vlidos so FILE , usado pelo Paradox e tabelas DBase, e a SERVER, que usado por qualquer servidor de bancos de dados. LANGDRIVER Essa configurao seleciona a linguagem do driver usada pela suas tabelas e ndices. A linguagem do driver determina que lngua especfica de caracteres podem ser armazenados nas tabelas e em qual tipo de ordem usada para construir ndices. O caractere padro do Paradox configurado segue o tipo de ordem ASCII , que separa "a" depois de "Z" isto , caracteres minsculos seguem os maisculos. Se voc quiser "A" e "a" para serem separados adjacentes (entre eles), voc deve considerar a mudana do drive de linguagem para o Paradox Internacional. Se fizer, embora fique avisado que, sem reconstruir todos os ndices - um usurio Paradox com uma linguagem de driver diferente no ser capaz de usar tabelas que voc cria. BLOCK SIZE A quantia mxima de dados que uma tabela Paradox suporta 64KB vezes o tamanho do bloco. O default do parmetro BLOCK SIZE de 2048 bytes, sendo assim qualquer tabela Paradox que voc cria limitada em 128MB em tamanho. O tamanho de bloco permitido para as tabelas com Level 3 e 4 so 1024, 2048, e 4096. Para o Level 5 e superior, voc pode tambm especificar um tamanho de bloco de 8192, 16384, ou 32768. O tamanho default, contudo, ainda 2048. Se voc mudar o tamanho do bloco no arquivo de configurao do BDE, todas as tabelas que voc criar depois de fazer as mudanas tero um novo block size. Para mudar o block size de uma tabela existente, primeiro mude o block size no BDE Administrator, depois copie ou recrie a estrutura da tabela. Por que lendo ou escrevendo um registro simples significa ler ou escrever todo um bloco que contm o registro, voc no deve fazer o block size maior do que necessrio para conter os dados.
Figura 2: Voc precisa alterar a configurao default do Local Share FILL FACTOR O FILL FACTOR determina o quo cheio um bloco de ndices deve estar antes que o Paradox aloque outro bloco quando estiver construindo o ndice. O default de 95%. Isso significa que o ndice inicialmente construdo, ou quando for reconstrudo como parte de organizar uma tabela, cada bloco de ndice ter aproximadamente 5 % de todo seu espao vazio. Quando voc adicionar um novo registro para uma tabela, a entrada do registro deve ser feita em cada ndice da tabela. Tendo espao livre no bloco de ndice, significa que menos provvel que o bloco afetado esteja cheio; portanto, adicionar o novo registro ser mais rpido. Apesar do FILL FACTOR poder ser configurado em qualquer porcentagem, deixando muito espao livre nos blocos de ndices o ndice ser maior. Se o ndice for maior, mais blocos de ndices devem ser lidos quando voc procurar por um registro, diminuindo a performance. STRICTINTEGRTY Se STRICTINTEGRTY (Strict Integrity) for configurado para TRUE, os programas que no suportam integridade referencial (tal como Paradox para DOS) no sero capazes de modificar qualquer tabela para cada integridade referencial que for definida. Para modificar uma tabela Paradox para DOS, configure STRICTINTEGRTY to False. Se voc fizer assim, e quiser proteger a integridade dos dados, voc deve escrever o cdigo para forar a integridade referencial em seu Paradox para a aplicao do DOS. LOCAL SHARE O BDE automaticamente cuida das tabelas e registros travando-os para as tabelas Paradox armazenadas no drive da rede compartilhado. Embora, no seja a nica situao onde a trava requerida para assegurar a integridade dos seus dados. Se voc executar mltiplos programas que simultaneamente acessem as mesmas tabelas no seu drive local, voc precisa travar para prevenir um programa da mudana de um registro j em uso por outro. A Figura 2 mostra as configuraes de System | Init do BDE Administrator. Por default, o parmetro LOCAL SHARE configurado para False. Se voc executar mltiplos programas que acessem as mesmas tabelas, voc deve configurar LOCAL SHARE paraTrue para o BDE providenciar uma trava, mesmo que as tabelas estejam no seu drive local, a menos que todos os programas estejam usando as mesma verso do BDE. Se voc estiver executando uma aplicao multi-usurio numa rede peer to peer voc deve ter tambm LOCAL SHARE configurado para True. Isso por que o BDE "v" o drive no servidor como um drive local mais do que um drive em rede compartilhado, e em cada estao est executando a sua prpria cpia do BDE. PRIVATE DIRECTORY Se voc programador que usa Paradox, ficar surpreso ao aprender que as regras que governam o uso do diretrio privado so muito diferentes no Delphi do que no Paradox. O Paradox cria arquivos temporariamente com nomes fixos no seu diretrio privado. Exemplos incluem ANSWER.DB, CHANGED.DB, DELETED.DB e KEYVIOL.DB. Por que essas tabelas temporrias mostram o mesmo nome para cada usurio e para cada instncia Paradox, cada usurio e cada sesso deve ter seu prprio diretrio privado. Quando duas instncias de Paradox esto executando na mesma mquina, isto assegura que 2 sesses de Paradox no tentaro criar uma tabela com um mesmo nome num mesmo diretrio ao mesmo tempo. Embora o BDE tambm crie arquivos temporrios no diretrio privado quando filtrando com Query, pesquisando, reestruturando tabelas Paradox e dBASE e quando apresentando uma query que une tabelas em 2 diferentes servidores, o BDE cria arquivo de nome nico para seu arquivo temporrio. Portanto, seguro para mltiplos programas de Delphi executando na mesma mquina, ao mesmo tempo, para um mesmo usurio, para o mesmo diretrio privado com tanto que o programa no crie arquivos com nomes fixos num diretrio privado. function GetExeName: string; { Retorna o nome do arquivo .EXE sem o Path e a extenso } var ExtPos : Integer; Name, Ext : String; begin Name := ExtractFileName(Application.Exename); Ext := ExtractFileExt(Application.ExeName); {Procura onde a extenso comea no nome} ExtPos := Pos(Ext, Name); { Extrai o nome sem a extenso. } if ExtPos > 0 then Name := Copy(Name, 1, ExtPos-1); Result := Name; end; { GetExeName. } Figura 3: Uma funo para retornar o nome do arquivo EXE Se mltiplos usurios executarem o mesmo programa numa rede, e se o BDE precisar criar arquivos temporrios enquanto o programa executa, voc precisar nomear um diretrio privado separado para cada usurio. Quando voc inicia um programa de banco de dados Delphi, isso abre a sesso default do BDE e configura o diretrio privado para o diretrio startup, o qual ser identificado no campo Iniciar do cone do programa no Windows desktop. Se nenhum for especificado, o diretrio startup ser aquele que contm o arquivo .EXE. Embora, o BDE no crie arquivo de lock no diretrio privado, at que o BDE necessite do diretrio privado para criar um arquivo temporrio, ou voc configura a path para o diretrio privado de dentro do seu programa nomeando uma path para a propriedade Session. PrivateDir . Por que o diretrio privado no est travado quando o programa inicia, sendo possvel 2 usurios diferentes iniciarem o mesmo programa e compartilhar o mesmo diretrio privado. Embora, o BDE necessite criar um arquivo temporrio, isso travar o diretrio privado para aquele usurio. Se outra cpia do BDE precisar criar um arquivo temporrio, aquele usurio receber uma exceo de aviso "Directory is busy". Isso bom; os programas Client/Server que no fazem junes heterogneas, no tendo que se preocupar sobre diretrio privado, por que o BDE no ter que criar qualquer arquivo temporrio. Mas, se voc estiver executando um programa que use uma tabela Paradox e muitos usurios compartilhando de um nica cpia do programa no drive de rede compartilhado, voc vai ter problemas . Se cada usurio estiver executando a mesma cpia do .EXE , ento cada usurio ter o mesmo diretrio privado - a menos que voc especifique o diretrio startup para cada usurio ou mude o diretrio privado no seu cdigo assim que o programa iniciar. A melhor soluo para esse problema ter cada programa Delphi configurado no diretrio privado para um diretrio nico quando iniciado. Uma maneira para fazer isso criar um subdiretrio com o mesmo nome do arquivo .EXE, da coloque isso no seu drive local. A funo mostrada na figura 3 volta o nome do arquivo .EXE com o path e extenso removida . Figura 4 mostra um procedimento que cria um diretrio privado. Usando essas rotinas, voc pode configurar o diretrio privado de dentro do seu programa: SetPrivateDir(c:\bdepriv\+GetExeName); Essa instruo cria um diretrio como um subdiretrio no diretrio C:\BDEPRIV, mantendo todos os diretrios de preferncia em uma localizao ao longo do diretrio raiz no seu drive local. Alternadamente , voc pode criar diretrios privados abaixo do diretrio de cada usurio na rede. Embora a performance seja melhor se o diretrio privado estiver num HD local, a rede uma escolha melhor se alguns usurios tem o espao do HD limitado. Por que h sempre muitas excees, uma boa idia fornecer uma maneira para o path do diretrio privado default para ser levado em conta. Voc pode fazer isso com um arquivo .INI, no Registry, ou um comando de parmetro de linha opcional para seu programa. Usando uma dessas tcnicas fica fcil manipular um caso excepcional em, que um usurio precisa de um diretrio privado num lugar no padronizado. procedure SetPrivateDir(DirPath: String); { Cria um diretrio especfico se no existir e faz dele um diretrio privado } begin ForceDirectories(DirPath); if DirectoryExists(DirPath) then Session.PrivateDir := DirPath else raise Exception.Create(O diretrio privado + DirPath + no pode ser criado); end; { SetPrivateDir } Figura 4: Use a procedure SetPrivateDir para criar um diretrio privado. Concluso Se seu programa Delphi usar o BDE, voc deve configur-lo corretamente , para um diretrio privado nico para cada usurio e para cada programa. Isso permite multiusurios em segurana e operaes de multitarefas. Configurando o BDE corretamente permitir mltiplos programas para compartilhar seguramente os dados na rede ou drives locais.