Академический Документы
Профессиональный Документы
Культура Документы
Paradox X InterBase
Introduo
www.clubedelphi.com.br
A primeira vista, as tabelas Paradox no apresentam muitas diferenas das tabelas criadas no InterBase e as seguintes semelhanas so evidentes: acesso pode ser feito atravs de um Alias; os tipos dos campos possveis so similares, apesar de possurem nomes diferentes; as tabelas podem ser criadas com o DataBase Desktop ; so utilizados os mesmos componentes TTable e TQuery para acesso; Na realidade, o BDE (Borland DataBase Engine) cria uma iluso de que tabelas InterBase e Paradox comportam-se da mesma maneira. Para alguns desenvolvedores, entretanto esta iluso termina logo. A primeira decepo vem com a utilizao do Database Desktop para manipulao de tabelas InterBase. Enquanto o Database Desktop a ferramenta ideal para criao e restruturao de tabelas Paradox, deficiente com relao ao Interbase, onde a restruturao e a utilizao de caractersticas mais avanadas s podem ser alcanadas atravs da montagem de scripts que sero executados no Interbase Windows ISQL. As pesquisas e ndices no InterBase diferenciam maisculas e minsculas, enquanto que no Paradox esta diferenciao configurvel. Ainda no InterBase a definio de chaves primrias e estrangeiras realizada facilmente, porm a alterao destas chaves no to trivial. Algumas operaes utilizando o InterBase so mais lentas do que no Paradox. Torna-se rapidamente claro que o InterBase no automaticamente melhor que o Paradox. A idia de que o InterBase no sempre mais adequado do que o Paradox verdica. Os dois produtos apresentam diferenas significativas e a escolha de qual utilizar plenamente dependente das condies e dos objetivos do aplicativo final. Na realidade, a nica coisa que eles tem em comum que ambos armazenam dados em tabelas. Cada um possui pontos fortes e fracos dependendo da realidade a ser trabalhada. O importante decidir qual deles apropriado para uma situao particular. A deciso tomada, usar Paradox ou InterBase, afetar de forma significativa o desenvolvimento do seu projeto.
possvel que mais de um campo ou combinaes de campos possam fornecer valores nicos. Estes campos - ou combinaes - so denominados Chaves Candidatas. imprescindvel para o gerenciamento de um sistema de banco de dados a identificao de Chaves Primrias. Uma tabela que possui uma Chave Primria chamada de R-table e todos os Data Sets (tables, query e stored-procedures) devem ser R-tables para que o modelo relacional possa funcionar corretamente. A vantagem deste conceito de dados baseado em conjunto que os conjuntos e as operaes neles realizadas possuem a propriedade de encapsulamento. Isto significa que quando realizamos operaes em um conjunto sempre geraremos um outro conjunto, que poder, ento, ter uma nova operao com ele realizada, produzindo um novo conjunto, e assim suscessivamente. Este um poderoso conceito lgico que, se corretamente implementado, tornar o desenvolvimento de aplicaes independente das caractersticas fsicas de armazenamento. Esta a base dos modelos relacionais. Os sistemas baseados em cursor (cursor-based) como o Paradox permitem que voc trabalhe somente com um registro de cada vez. Sistemas baseados em conjuntos (set-based) permitem a manipulao de conjuntos de dados como se fossem uma entidade nica. Esta caracterstica permite a simplificao do desenvolvimento de aplicaes, alm de melhor garantir a integridade dos dados.
Portanto, necessrio determinar o valor da maior Chave Primria. Uma vez que este valor foi determinado o registro que possui este valor pode ser recuperado. Se for necessrio recuperar os ltimos registros (como no caso da apresentao dos dados em um grid) o processo deve ser repetido algumas vezes, tornando-se um pouco complicado. Para recuperar o penltimo registro, o InterBase deve agora encontrar o maior valor da chave primria que seja inferior ao valor mximo desta. Para o antepenltimo registro, ele deve procurar o valor mais prximo ao mais prximo do valor mximo da chave primria, e assim consecutivamente, at o nmero necessrio de registros ser recuperado. Uma operao que uma moleza para o Paradox torna-se uma tremenda dor-de-cabea para o InterBase. Em geral, a navegao de trs para frente atravs de tabelas SQL ineficiente. O BDE armazena grupos de registros para minimizar este problema, mas se voc avanar muito para trs em tabelas relativamente extensas, acabar tendo que aguardar por pausas significativas.
Travamento (locking)
Quando dois usurios tentam acessar a mesma faixa de dados podem surgir problemas ameaando a integridade do banco de dados. O Paradox e o InterBase lidam com estes problemas de maneiras diferentes. Como o Paradox no possui nenhum conhecimento do que outro processo Paradox est fazendo, ele utiliza um esquema pessimista de travamento (Pessimistic Locking Scheme). Assim que um usurio tenta mudar um registro o registro travado. Nenhum outro usurio pode fazer alteraes neste registro at que o primeiro usurio termine as alteraes ou cancele a operao. Por um lado, este esquema de travamento positivo se considerarmos que o usurio que obteve o travamento poder concluir com sucesso a sua operao de alterao. Por outro lado, isto negativo no sentido em que um usurio poder monopolizar um registro indefinidamente. Isto seria um problema, por exemplo, num sistema de reserva de viagens. Um viajante indeciso poderia trancar um assento por um longo perodo, levando os outros a acreditarem que assento j foi tomado, sendo que no final o indeciso pode acabar desistindo do assento. O InterBase, por outro lado, lida com a manipulao de todos os dados atravs de um esquema de concorrncia otimista (Optimistic Concurrency Scheme). Na verdade, quando um usurio processa uma alterao o registro no impedir que outras pessoas tentem tambm alterar este registro. Quando um usurio comea a alterar um registro InterBase uma cpia do registro original salva. O usurio executa seu servio, mas os outros usurios no esto sob nenhuma forma impedidos de acessar o mesmo registro. Quando algum usurio termina sua alterao e efetua um post (atualizao no banco) a cpia do registro original comparada com o registro corrente. Se os valores so diferentes (provavelmente porque outro usurio alterou mais rapidamente o mesmo registro) as alteraes efetuadas pelo usurio no registro so rejeitadas. Isto significa que usurios individuais no podem travar o acesso de outros usurios ao mesmo registro. No exemplo anterior de reservas de viagens, o primeiro passageiro a confirmar a reserva ficaria com o lugar, mesmo se vrios outros usurios estivessem simultaneamente considerando o mesmo lugar. O lado ruim da estria, porm, que as alteraes so rejeitadas apenas no momento em que se tenta efetuar a atualizao no banco, aps todo o trabalho de alterao ter sido efetivado. Isto pode ser corrigido relendose (pelo mtodo refresh) os campos alterados e tentando-se novamente efetuar a atualizao. Os componentes TTable ou TQuery tornam esta operao transparente atravs da propriedade UpdateMode. A verificao, quando enviamos comando de atualizao no banco, pode ser feita dependendo do valor desta propriedade, em todos as campos, somente nos campos alterados ou somente nas chaves primrias. Estas duas vises refletem as diferenas bsicas nas duas filosofias. O modelo pessimista Paradox assume que as colises sero frequentes e devero ser tratadas de uma forma rigorosa, enquanto o modelo otimista InterBase assume que as colises sero ocasionais e maximiza a habilitao dos usurios para o compartilhamento de dados sem interferncia de um com o outro, enquanto estiver sendo mantida a integridade. Um importante benefcio do modelo do InterBase que um usurio que quer visualizar um conjunto de dados estveis, talvez para gerar uma srie de relatrios que precisam refletir a situao atual dos dados, no sofrer interferncia de outro usurio que estiver naquele momento alterando os dados. Em tabelas Paradox, o gerador de relatrios dever colocar um write lock na tabela para garantir que os dados no sejam alterados e ningum poder efetuar transaes na tabela at que este lock tenha deixado de existir. No InterBase as verses dos registros mais antigos, so retidas durante o tempo em que o usurio estiver algum interesse sobre elas. Isto significa que nem os leitores dos dados impedem a ao dos editores e nem os ltimos comprometem o resultado dos primeiros. InterBase o nico banco SQL que torna isto transparente. Quando os adeptos do InterBase so questionados sobre as vantagens do banco, este controle da disponibilidade do registro normalmente a primeira vantagem a ser mencionada.
Processamento de Transaes
Como voc j sabe, o modelo baseado em conjuntos constitui-se em um conjunto de dados que podem ser tratados como entidades individuais, levando em considerao o contedo especfico destes conjuntos. O processamento de transaes uma extenso destas idias. Uma transao um grupo de operaes onde ou todas elas so bem ou mal sucedidas. Nunca dever ocorrer a situao onde apenas algumas sejam bem ou mal sucedidas.
Por exemplo, um caixa automtico realiza transaes com bancos de dados. Sempre que voc retira dinheiro, duas operaes devem ser realizadas para que o banco possa contabilizar seu ativo apropriadamente: o saldo da sua conta deve ser reduzido e o saldo de dinheiro disponvel no banco deve ser reduzido na mesma quantia. Obviamente, a situao prefervel aquela na qual as duas operaes sejam bem sucedidas, mas se acabar a energia no meio de uma operao, totalmente inaceitvel que uma conta seja atualizada e a outra no - ambas operaes deveriam falhar para manter uma contabilizao apropriada. O processamento de transaes permite que isto acontea. As operaes em uma transao no so permanentes at que seja efetuado o commit na transao. At que isto acontea, as operaes podem ser desfeitas, retornando-se ao ponto de partida. Um Rollback pode ser implementado explicitamente, utilizando-se o mtodo Rollback, ou automaticamente, quando ocorre uma falha do sistema. O InterBase suporta totalmente o conceito de transaes. Na realidade, todas as operaes ocorrem dentro de um contexto de transao. Na ausncia de um controle explcito do programador, o BDE automaticamente envolve todas as operaes na sua prpria transao. Por exemplo, toda vez que voc atualiza um registro, a transao inicializada (started) e finalizada (commited) automaticamente aps cada confirmao (post). Usando o componente TDataBase voc pode explicitamente controlar uma nica transao, e tambm faz-la conter quantas operaes voc quiser. O Paradox porm no suporta transaes. Sempre que um registro atualizado no banco, as mudanas so permanentemente gravadas na tabela. Ser necessria uma nova alterao para desfazer manualmente as alteraes anteriores se um Rollback for desejado. Alm disto, o sistema no ir garantir que, em um grupo de operaes, todas elas sero bem sucedidas ou todas elas falharo. possvel simular algumas destas caractersticas atravs de certos truques de programao e tabelas temporrias, mas eventualmente, haver a necessidade de se modificarem os registros um de cada vez, em lote, o que deixaria aberturas para a ocorrncia de falhas. Alm disto, impossvel de se programar um aplicativo Paradox para se recuperar de uma falha de sistema como queda de fora ou danos na memria secundria.
Concluso
importante relembrar que o Paradox e o InterBase so sistemas consideravelmente diferentes, mesmo que o BDE crie uma iluso de semelhana. Esta uma sedutora mas perigosa idia pois converter uma aplicao de um mecanismo para outro (InterBase em Paradox ou vice e versa) envolve muito mais do que uma simples mudana de Alias. Requer na verdade, significativas diferenas de conceito e projeto. Escolher qual sistema utilizar uma deciso crucial que deve ser tomada no incio do projeto. Esta deciso ter um impacto profundo no desenvolvimento da sua aplicao.
Adaptao livre do artigo InterBase vs. Paradox Delphi Informant Magazine - volume 2, nmero 6, Junho de 1996, Pag. 28-35 Danielle Fortes Lopes - dani@wim.com.br WIM Informtica Ltda.